指针与多维数组

int a[10][20];
int b[10];
语法上讲 a[3][4]和b[3][4]都是对一个int类型对象的合法引用,但a是一个真正的二维数组,它分配200个int类型长度的存储空间,并且通过常规的矩阵下标公式20
row+col(row表示行,col表示列),计算得到元素a[row][col]的位置.
对b来说该定义只分配10个指针,并且没有初始化.他们的初始化必须以显式的方式进行,比如静态初始化或者通过代码初始化.假定b的每个元素都指向一个具有20个元素的数组,那么编译器就要分配200个int类型长度的存储空间和10个指针的存储空间.指针数组的一个重要优点在于,数组的每一行长度可以不同,
还得强调一下,对b来说,只是声明了10个指针,它所指的内容并不在这里体现,书上说20个元素的数组,这个有点误导的嫌疑,它可以随便指向任何大小.

你可能感兴趣的:(指针与多维数组)