指针与数组

来源:互联网 发布:ipad防沉迷软件 编辑:程序博客网 时间:2024/06/06 02:08

定义一个数组int a[3][2] = {0,1,2,3,4,5},这个数组可以看成三个一维数组{0,1},{2,3},{4,5}。

a代表整个数组,同时也代表这个二维数组中的第一个一维数组的起始地址;

*a代表这个二维数组的第一个一维数组,同时也代表第一个一维数组的第一个元素的地址;

**a代表整个数组的第一个元素,也就是第一个一维数组的第一个元素,即{0}。

a+1代表整个数组,同时也代表这个二维数组中的第二个一维数组的起始地址;

*(a+1)代表这个二维数组的第二个一维数组,同时也代表第二个一维数组的第一个元素的地址;

**(a+1)代表整个数组的第三个元素,也就是第二个一维数组的第一个元素,即{2}。

i代表行,j代表列;0≤i<3,0≤j<2.

通过*(*(a+i)+j)这个式子,可以找到数组的任意一个元素。

&a代表整个数组的起始地址,a代表这个二维数组中的第一个一维数组的起始地址,*a代表第一个一维数组的第一个元素的地址。

它们在数值上是相同的,但是“步长”不同。

&a+1中1代表了24个字节;a+1中1代表了8个字节;*a+1中1代表了4个字节。(一个int型数据占4个字节)

int *p,y = 1;

p = &y;

y = ++*p; //先计算*p的值,然后进行加运算,最后赋值给y

y = *p++;//线求*p的值然后赋值给y,最后计算p++,p就指向下一个元素。


1 0
原创粉丝点击