数组指针域指针数组

 看c++primer第四章的数组与指针里面有一个实例:int a[4][5];  int (*p)[5] = a; 发现没有看懂 按照书上的说话 这是定义一个指向有5个元素的数组的指针 想了一下 发现有点晕 没有怎么明白 查了一些资料 对于这样的问题  网上给出了这样的解答 p左边的*在这里不是取值运算符,而是一个声明符,它指出p是一个指针。而()括号是不能去掉的,如果去掉了,由于[]运算符优先级比*高,p就会先跟[]结合,这样p就变成了一个指针数组,而不是指向数组的指针 仔细想想还真的是这样  这也解决了我先前在上c语言的时候的问题 当时我就不是很明白 为什么int **p 不能直接赋值a[4][6]的地址a  按照解释 a是指针的指针 p也是指针的指针 实际上 a还是一个一维指针 只不过a这个指针指向的内存单元中存储的数据又是一个有6个元素的指针 也就是说 a指向的内存单元的数据类型应该是int*[6] 而int **p指向的内存单元的类型是int* 这两个是不相同的 因此不能够赋值

原文链接: https://www.cnblogs.com/frozenxia/archive/2012/03/02/2377598.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    数组指针域指针数组

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/43104

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午7:48
下一篇 2023年2月8日 下午7:49

相关推荐