4.18数组名理解
int main() { int a[5] {5, 4, 3, 2, 1}; int *ptr (int *)(a 1); printf( %d,%d, *(a 1), *(ptr - 1)); return 0; }看这个代码数组a中存放了五个元素数组名a是指向数组首元素a[0]的地址类型为int*a代表了整个数组的地址类型为int*[5]a1表示指针向后1偏移1个int类型大小*a1也就是取出a[1]的值就是4a1表示向后偏移一个完整数组的大小然后ptr-1就是向前偏移一个int大小这时候指向的是结果就是4和1int main() { int aa[2][5] {10,9,8,7,6,5,4,3,2,1}; int *ptr1 (int *)(aa 1); int *ptr2 (int *)(*(aa 1)); printf( %d,%d, *(ptr1 - 1), *(ptr2 - 1)); return 0; }这个程序中aa二维数组内元素的存放方式为10987654321aa1代表跳过整个二维数组指向1的末位ptr-1向前int类型大小解引用后就是1aa1表示向后偏移一个一维数组的大小也就是指向6的末位ptr2-1向前偏移一个int类型大小解引用结果就是6
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2531690.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!