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

      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)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值