不同价位的精美音乐盒 健身减肥瘦身产品 时尚、运动服饰女鞋围巾配件

2009年3月30日星期一

读书笔记(一)

1. 关于增值语句

mango[i++] += y;

被当作 mango[i] = mango[i] + y; i++; 而不是 mango[i++] = mango[i++] + y;

“++x” 表示:取x的地址,增加它的内容,然后把值放在寄存器中;

“x++” 表示:取x的地址,把它的值装入寄存器中,然后增加内存中x的值。

2. 关于数组和指针参数

实参

所匹配的形式参数

数组的数组

char c[8][10];

char (*c)[10];

数组指针

指针数组

char *c[15];

char **c;

指针的指针

数组指针(行指针)

char (*c)[64];

char (*c)[64];

不变

指针的指针

char **c;

char **c;

不变

3. 多维数组的分解

实际上,在C语言中不支持多维数组,只支持“数组的数组”

int apricot[2][3][5];

兼容类型:

int (*p)[3][5] = apricot;

int (*r)[5] = apricot[i];

int *t = apricot[i][j];

int u = apricot[i][j][k];

4const #define的差异

C++中,两者都可以用来定义常量,差别在于:

(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查;而对后者只进行字符替换,没有类型的安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)。

(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

建议在C++程序中只用const常量,而不使用宏常量。

5float -> double -> long double

int -> unsigned int -> long int -> unsigned long int

当把有符号操作数和无符号操作数整合时,会通过把符号位看成数的位的方法把有符号操作数“转换”成无符号的值。这条规则可能会导致某些隐蔽的编程错误。