c++概念性的问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 03:29:46
a[3][4]是个二维数组
我定义个*a,则是指向一个一维数组
i是行,j是列
a+i*4+j表示是什么意思?当i=0是元素会不会变?我不懂
当i=0时,意思会不会变?上面口误

只写一个a代表这个数组的首地址
所以
a+i*4+j表示从数组a的首地址起i*4+j的位置。这个位置和数组的实际值无关。
*(a+i*4+j)表示i*4+j的位置的元素的值。

例如a[3][4]=
{1,2,3,4,
5,6,7,8
9,10,11,12}

i=0,j=4;*(a+i*4+j)=4
i=2,j=2;*(a+i*4+j)=11
i=0,j=0;*(a+i*4+j)=1

a+i*4+j 就是a[i][j]的地址
*(a+i*4+j) 就是 a[i][j] 所以i = 0;元素是会变的

a+i*4+j表示 a[i][j],因为数组定义的是连续的空间。
i=0时,就是在二维数组的第一行可以变呀,j变了,不就变了

i=0 j=0 a+i*4+j =a[0][0]
i=0 j=1 a+i*4+j =a[0][1]
i=0 j=2 a+i*4+j =a[0][2]
i=0 j=3 a+i*4+j =a[0][3]
i=1 j=0 a+i*4+j =a[1][0]
……