《程序员求职成功路》摘抄
2014-02-21 19:46
169 查看
1. int a[5][10],a和&a都是数组a[5][10]的首地址,他们代表的类型不同,a是int a[10]的类型,而&a是a[5][10]的类型,a+1=a的首地址+sizeof(int)*10,&a+1=a的首地址+sizeof(int)*10*5。更抽象地,定义一个数组int a[M1][M2][...][Mn]
那么a+1=a的首地址+M2*M3*...*Mn*sizeof(int) 而&a+1=a首地址+M1*M2*M3...Mn*sizeof(int)。
2.在计算数组长度时,注意数组作为函数的参数,将退化为指针。
3.指针与引用的区别:引用为所指对象的一个别名,引用必须初始化,指针没有这个要求;引用总是指向它最初获得的那个对象,而指针可以重新被赋值。
指针引用作参数:void func(MyClass *&pBuildingElement);//指针的引用,能修改指针
指针作参数:void func(MyClass *pBuildElement);//指针,不能修改指针
指针的指针作参数:void func(MyClass **pBuildingElement);//指针的指针,能修改指针
(1).指针才声明的时候最好初始化
(2). 指针的加减运算移动的是指针所指类型的大小。
(3).当用new 或者malloc为指针分配内存时应该判断分配是否成功。
(4).指针在指向的动态内存释放后应该重新置为NULL,防止野指针。
4.常见的二进制的变换操作
(1).
(2).将第n位置位或清零
#define BITN (1<<n)
置位:a|=BITN;
清零:a&=~BITN;
(3).清除a最后边的1
a&(a-1)
(4).将一个整数对齐到n:
a=(a+n-1)&~(n-1)
5.数据对齐
自然对齐遵循如下规则:
(1).数据成员对齐原则。在默认的情况下,各成员变量存放起始地址相对于结构的起始地址的偏移量:sizeof(类型)或者其数倍。
(2).整体对齐原则 结构体的总大小是最大的sizeof(类型)的整数倍
6.static
(1).当static修饰全局变量时,该变量只存在本文件,其他文件就不能引用;
static修饰函数,表示本文件中使用,其他文件中的函数不能条用此函数。
(2).C++中的static
static修饰函数和变量,表示该函数或变量属于该C++类的静态成员,为该类所有对象共有,静态成员函数不接受隐含的this自变量,所以无法访问自己的非静态成员。
7.C++与C的区别
(1).#define宏在编译时 编译器只对宏进行简单的替换,C++中const常变量,优点:拥有类型,可调式,可进行参数合法性检查,宏而已产生二义性。内联函数和宏的区别:宏是有预处理器对宏进行替代,而内联函数是通过编译器控制来实现的
8.模板与继承的选择:类型T影响类的行为就要用虚函数,从而要用继承,不影响,可以使用模板
9.空类里面有5个成员函数
class Nothing{};
等价于:class Nothing
{
Nothing();
Nothing(const Nothing &rhs);
Nothing & operator=(const Nothing &rhs);//赋值运算符
Nothing *operator &();//一对取址运算符
const Nothing *operator &()const;
}
10.实现strstr()函数,原型char *strstr(char *s1,char *s2)功能从s1中找到s2第一次出现的位置(不比较结束符NULL)
那么a+1=a的首地址+M2*M3*...*Mn*sizeof(int) 而&a+1=a首地址+M1*M2*M3...Mn*sizeof(int)。
2.在计算数组长度时,注意数组作为函数的参数,将退化为指针。
3.指针与引用的区别:引用为所指对象的一个别名,引用必须初始化,指针没有这个要求;引用总是指向它最初获得的那个对象,而指针可以重新被赋值。
指针引用作参数:void func(MyClass *&pBuildingElement);//指针的引用,能修改指针
指针作参数:void func(MyClass *pBuildElement);//指针,不能修改指针
指针的指针作参数:void func(MyClass **pBuildingElement);//指针的指针,能修改指针
(1).指针才声明的时候最好初始化
(2). 指针的加减运算移动的是指针所指类型的大小。
(3).当用new 或者malloc为指针分配内存时应该判断分配是否成功。
(4).指针在指向的动态内存释放后应该重新置为NULL,防止野指针。
4.常见的二进制的变换操作
(1).
(2).将第n位置位或清零
#define BITN (1<<n)
置位:a|=BITN;
清零:a&=~BITN;
(3).清除a最后边的1
a&(a-1)
(4).将一个整数对齐到n:
a=(a+n-1)&~(n-1)
5.数据对齐
自然对齐遵循如下规则:
(1).数据成员对齐原则。在默认的情况下,各成员变量存放起始地址相对于结构的起始地址的偏移量:sizeof(类型)或者其数倍。
(2).整体对齐原则 结构体的总大小是最大的sizeof(类型)的整数倍
6.static
(1).当static修饰全局变量时,该变量只存在本文件,其他文件就不能引用;
static修饰函数,表示本文件中使用,其他文件中的函数不能条用此函数。
(2).C++中的static
static修饰函数和变量,表示该函数或变量属于该C++类的静态成员,为该类所有对象共有,静态成员函数不接受隐含的this自变量,所以无法访问自己的非静态成员。
7.C++与C的区别
(1).#define宏在编译时 编译器只对宏进行简单的替换,C++中const常变量,优点:拥有类型,可调式,可进行参数合法性检查,宏而已产生二义性。内联函数和宏的区别:宏是有预处理器对宏进行替代,而内联函数是通过编译器控制来实现的
8.模板与继承的选择:类型T影响类的行为就要用虚函数,从而要用继承,不影响,可以使用模板
9.空类里面有5个成员函数
class Nothing{};
等价于:class Nothing
{
Nothing();
Nothing(const Nothing &rhs);
Nothing & operator=(const Nothing &rhs);//赋值运算符
Nothing *operator &();//一对取址运算符
const Nothing *operator &()const;
}
10.实现strstr()函数,原型char *strstr(char *s1,char *s2)功能从s1中找到s2第一次出现的位置(不比较结束符NULL)
相关文章推荐
- c++ object model 摘抄
- 结构(C# ) (摘抄msdn.备忘.)
- DNS摘抄
- 微博语(摘抄)
- 【摘抄】DB2字符集问题
- Android的AlertDialog详解(有好几个范例样式可以摘抄,呵呵)
- linux源码组织结构(摘抄)
- C++类模板 实现顺序表 从《数据结构》(C++版) 北京科海摘抄
- 可重入和不可重入(摘抄)
- 集体编程智慧代码摘抄【第二章】
- OGC之路(1) 之 WMS标准学习总结(摘抄)
- WEB测试--的环境搭建和测试方法(摘抄的)
- 【摘抄】《杜拉拉升职记大结局与理想有关》读后感
- 软件开发-思考(摘抄)
- ServletContext与ServletConfig的详解及区别(摘抄)
- 摘抄
- 中美公务员工资制度比较---摘抄:美国公务员工资制度特点
- 杀死一只知更鸟 摘抄
- 诫子书--摘抄
- MySql学习笔记(二)SQL简单入门语句--Fenby摘抄笔记