《好学的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]在内存里是紧挨着的。