请问为什么有些时候二维数组可以只在数组名后面写一个数字,这表示什么意思呢?例如:
int k, t[3][2], *pt[3];
for ( k = 0; k < 3; k++) {
pt[k] = t[k];
}
还有此时 pt[k] = t[k];是什么意思呢?
谢谢
首先你要清楚 pt是一个int *类型的数组,它是一个指针数组,他的每一个元素都是一个int *指针
t 是一个二维数组,t[k] 的类型是 int[2] ,也就是一个一维数组,这个一维数组名这时被当成数组首个元素的指针。
所以这个语句的意思就是把pt【k】 这个指针 指向 t【k】这个int型 数组首地址
假如t[3][2]={{1,2},{3,4},{5,6}},那么t[0]就是{1,2}这组的首地址,也就是1的地址,t[0]+1就是2的地址。t[1]就是{3,4}这组3的地址,t[1]+1就是4的地址…。(如果把二维数组看作一维数组,可以这样写t是1地址,t+1是2的地址,…+5是6的地址,*t(或t[0])是整个数组的首地址值)。因为把这个数组付值给pt这个指针数组变量了,所以把上面的t换成pt是一样的。我了解的也不多,有不对的地方一起探讨