C语言指针学习笔记
1-二维数组指针
int a[3][4] a代表二维数组首元素的地址,此首元素不是一个简单的整形元素,而是由4个整形元素组成的一维数组,因此a代表的是首行(序号为0的行)的起始地址 。 a+1代表序号为1的行的起始地址。a指向a[0], a+1指向a[1]或者说a+1的值是a[1]的起始地址,a+2代表a[2]的起始地址,若a的值是2000,则a[2]的值是2032. 若二维数组的首行起始地址为2000,一个整形数据占4个字节,即a的地址是2000,则a+1的值应该是2000+4*4=2016 a[0],a[1],a[2]既然是一维数组名,从前面已知数组名代表数组首元素地址,因此a[0]代表一维数组a[0]中第0列元素的地址,即&a[0][0].同理a[1]的值是&a[1][0]. 怎样表示a数组0行1列元素的地址?a[0]是一维数组名,该一维数组中农序号为1的元素的地址应该用a[0]+1来表示。 总结:
a[0]+0, a[0]+1, a[0]+2, a[0]+3, 分别表示元素a[0][0],a[0][1],..a[0][3]的地址 a指向a[0], a+1指向a[1], a[0]代表一维数组a[0]中第0列元素的地址一维数组中,a[0]和 *(a+0)等价,a[1]和*(a+1)等价,因此二维数组中a[0]+1和*(a+0)+1都是&a[0][1],即a[0]+1和*(a+0)+1都是地址。a[1]+2与*(a+1)+2都是&a[1]+2. 进一步分析,欲得到a[0][1]的值,用地址法怎么表示呢?
既然a[0]+1和*(a+0)+1等价,则: *(*(a+0)+1)就是a[0][1]的值; *(a[0]+1)也是a[0][1]的值; *(*a+1)也是a[0][1]的值; 总结:*(a+i)和a[i]是等价的。 二维数组a的有关指针总结
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/547095.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!