看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
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!