《好学的C++ 第2版》 第5章 数组--都给我排好队

若变量声明时未进行初始化,那变量里保存的是垃圾数据。

可以用集合来初始化数组。

c++把全局变量默认初始化为0(数组的每一个元素都会被初始化为0),因为它是静态存储类;但局部变量若未初始化,存的就是垃圾数据。

也可以把某个函数的局部变量声明为静态的,这样该函数下次调用时还能拿到该局部变量的值(?)。不过它仍然是局部变量,对该函数的外部仍然是不可见的。

数组下标是距离数组起点的偏移量,第一个元素相对自己的偏移量为0,因而下标从0开始。(FORTRAN下标从1开始,减1操作会多耗费一点时间。C系语言更接近CPU操作。)

让调用整形变量的表达式执行浮点运算:

int a = 1;

double b = a;

double c = b / 9;

字符串常量:

char* wish = "no work tomorrow."

字符串数组:

char* lie[3] = {"you", "are", "sexy"};

 

越界访问或设置数组元素时,c/C++不会报错,后果是访问或覆盖了数组外部的一个小内存区域,这种漏洞很难调试。C/C++默认“码农知道自己在干啥”,因而程序才能更快更紧凑,带来的缺点就是码农自己要保证数组下标不越界。

二维数组:矩阵

int matrix[5][10]; //两重循环才能将其初始化

c++多维数组里最右侧下标变化最快,matrix[3][2]跟matrix[3][3]在内存里是紧挨着的。

 

posted @ 2017-04-02 20:42  fFaXzz  阅读(167)  评论(0编辑  收藏  举报