您的位置:首页 > 职场人生

《程序员求职成功路》摘抄

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: