C语言-闲聊一维、二维数组
①若a[i]为一维数组
则有,
a[0],为数组的一个元素。
a[i]=*(&a[i]),为数组的一个元素。
a+i=&a[i],为元素a[i]的地址。
*(*(a+i))=*(*&a[i])=*a[i],
*a[i]无意义。
~
②若a[i]为二维数组
则有,
a[0],为数组的一个列指针。
a[i]=*(&a[i]),为数组的一个列指针。
a+i=&a[i],为数组的一个行指针,也是列指针a[i]的地址。
*(*(a+i))=*(*&a[i])=*a[i],
*a[i],表示第(i+1)行第1列的元素。
~
③综上所述
(a+i)、a[i]在一维数组和二维数组中的含义不同。
一维数组中
(a+i)表示地址,元素地址,数组名。
a[i]表示元素。
二维数组中
(a+i)表示行指针,列指针地址,元素地址的地址,以一行列指针为元素的数组的数组名(过渡数组名)
a[i]表示列指针。
~
二维公式复习
行指针:a+i=&&a[i][j]
列指针:*(a+i)+j=a[i]+j=(a+i)[j]=&a[i][j]
元素*(*(a+i)+j)=*(a[i]+j)=*(a+i)[j]=a[i][j]
~
就这么简单,
你学会了吗?