Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22068
  • 博文数量: 14
  • 博客积分: 325
  • 博客等级: 一等列兵
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-13 10:46
文章分类

全部博文(14)

文章存档

2012年(14)

我的朋友
最近访客

分类: C/C++

2012-06-13 10:55:56




  1. int i, *j, &k=i;  // i是int型变量,j是指向int的指针类型,k是i的引用

  1. const int *pci = new const int(1023);
  2. ...
  3. delete pci;

  1. const int *pci2 = new const int[3]();
  2. ...
  3. delete pci2;

  1. 内置类型变量的初始化
  2. 若内置类型变量定义在函数/方法之外,则会被默认初始化为0值;否则则不会被默认初始化。

  1. 1.静态分配的数组
  2. 若数组定义在方法之外,则所有内置元素会被默认初始化为0值;否则则不会被默认初始化。

  3. 若在定义数组的时候就利用初始化列表进行初始化,则初始化列表中元素的个数不能大于数组的维数,若小于数组的维数,则数组中剩下的内置元素会被初始化为0值。
  4. int ai[] = {1,2,3};   // 共3个元素,其初始值分别是1,2,3
  5. int ai2[5] = {1,2,3}; // 共5个元素,其初始值分别是1,2,3,0,0


  6. 2.动态分配的数组
  7. int * ai = new int[5];    // 共5个内置元素,都未被初始化。
  8. int * ai2 = new int[5](); // 共5个内置元素,都被(且只能被)初始化为0值。

  1. int *ai[3]; // 数组 OF int类型的指针

  2. int (*ai1)[3]; // 指针 OF int类型的数组
  3. int ai2[][3];  // 与上面等价。第一维的大小可以忽略

  1. int b[3];
  2. int (&ai3)[3] = b; // 引用 OF int类型的数组

  3. // 实际传递的是指向数组第一个元素的地址的指针,编译器不会检查数组实参的维数与形参是否匹配
  4. void fun1(int arr[10])
  5. // OR void fun1(int arr[])
  6. // OR void fun1(int *arr)
  7. {
  8.     ...
  9. }

  10. // 数组大小成为实参和形参类型的一部分,编译器会检查数组实参的维数与形参是否匹配
  11. void fun2(int (&arr)[10])
  12. {
  13.     ...
  14. }

  1. typedef MyClass * TypeA;
  2. const TypeA var1 = ...; // 等效语句其实是 MyClass * const var1 = ...;
  3. TypeA const var1 = ...; // 同上

  1. ++i 比 i+的效率更高。

  1. 将sizeof用于表达式时,并不会计算表达式的值,如在sizeof(*p)或是sizeof *p中,指针p可以指向无效地址,因为不需要对p进行解引用。

  2. 对数组做sizeof等效于将其元素类型做sizeof操作后乘上数组元素的个数:
  3. int ia[10];
  4. int sz = sizeof(ia)/sizeof(*ia); // sz为10

  1. i/j
  2. 1)若i和j皆为正整数或皆为负整数,则结果为0或正整数。
  3. 2)若i和j一个为正整数,另一个为负整数,则结果的正负号依靠于机器。

  4. 21/6   // result is 3
  5. -21/-8 // result is 2
  6. 21/-5  // machine-dependent:-4 or -5


  7. i%j
  8. 1)若i和j皆为正整数,则结果为0或正整数。
  9. 2)若i和j皆为负整数,则结果为0或负整数。
  10. 2)若i和j一个为正整数,另一个为负整数,则结果的正负号依靠于机器。

  11. 21%6   // result is 3
  12. -21%-8 // result is -5
  13. 21%-5  // machine-dependent:1 or -4


  1. 位移操作符
  2. >> 若是无符号数,则最高位补0;若是有符号数,则依赖具体实现,最高位补符号位或是0。
  3. << 最低位补0。


  1. 预处理器一般会定义以下的常量:
  2. __FILE__ 当前文件名
  3. __LINE__ 当前行号
  4. __TIME__ 文件被编译的时间
  5. __DATE__ 文件被编译的日起

  6. NDEBUG 是否关闭了debug模式
  7. // #ifdef NDEBUG




阅读(414) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:拷贝构造方法和默认赋值操作

给主人留下些什么吧!~~