1.二维数组名a的含义:
定义一个二维数组a :
int a[3][4] = {{1,3,5,7}, {9,11,13,15}, {17,19,21,23}};
a数组包含3个行元素,a[0],a[1],a[2]。
每个行元素a[i] 又是一个一维数组,它包含4个元素。
a == &a[0] a + i == &a[i] a[0] == &a[0][0] a[i] == &a[ i ][0]
2.二维数组地址的关系:(地址由行至列以元素类型递增)
3.二维数组与一维指针数组等价
数组名即行数组的首地址。
char* st[] = {"SUN", "MOON", "STAR", "X"}; printf("(%s, %c)", *(st + 1) + 1, *(*(st + 2) + 2) + 2); //(OON, C)
st + i 指的是 元素st[ i ]的地址&st[ i ],而元素st[ i ],即*(st + i)是一个指向字符串的指针,即该字符串的首地址.
即st + i 指的是第 i 个字符串的地址的地址。