在C中,数组中的位置a [i]等于*(a + i)。但是,对于二维数组a [i] [j],什么是等效指针?我到了 (a +((i (第二个数组的大小)+ j)),但这似乎不是一个明确的答案。
答案 0 :(得分:2)
排名a[i]
为*(a+i)
排名a[i][j]
为*(*(a + i) + j)
请记住,二维数组是一个数组数组。因此*a+0
指向第一个数组,*a+1
指向第二个数组,依此类推。
简化......
*(*a+1) = *(*(a + 0) + 1 ) = *(a[0] + 1) = a[0][1]
答案 1 :(得分:1)
a[i][j] is *(a[i] + j) or *(*(a + i) + j)
答案 2 :(得分:0)
您的索引:
*(a + ((i(size of the second array) + j))
用于2D矢量,如果在连续存储器中分配2D数组,则可以像下面的示例中那样进行索引:
float *I = (float*)malloc(n*n*sizeof(float));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j) I[i*n+i]=1.0;
else I[i*n+j]=0.0;
}
}
它是连续内存块中的单位矩阵。