a+ i是取二维数组a[ i][ j]的值吗?

如题所述

是的,两种不同的写法,本质都是取那个地址存在的值。

a[i][j]是第i行(0算起)第j列(0算起)的元素值。a+i是第i行的行指针,那么*(a+i)就是第i行第0个元素的指针,自然*(a+i)+j就是第i行的第j个元素的指针了,最后通过这个指针用*取出来的值*(*(a+i)+j)不就是第i行第j列的值,这就和a[i][j]完全是一回事。

扩展资料:

二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

按“列优先顺序”存储时,地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节 

参考资料来源:百度百科-二维数组

温馨提示:答案为网友推荐,仅供参考