int (*a)[10];在数组 的指针中a+1为什么是指向下一个a[10]的数组?

*a+1不等于a[0]+1,却等于a[0+1]而a+1不应该是地址+1吗?为什么是指向下一个数组。... *a+1不等于 a[0]+1,却等于a[0+1]
而a+1不应该是地址+1吗?为什么是指向下一个数组。
展开
 我来答
YZX浪子
2020-07-23 · TA获得超过110个赞
知道小有建树答主
回答量:260
采纳率:86%
帮助的人:64.6万
展开全部
在汇编中a + 1才是真正的地址+1,而在C/C++中a + 1(假设a是一个指针)要取决于a指向的类型大小,(_Ty*)a + n相当于(char*)a + n * sizeof(_Ty)。比如int* a;,*a的类型为int,则此时a + 1相当于(char*)a + sizeof(int) * 1,也就是说C/C++中指针的加减运算的最小单位是指针指向的类型而不是字节。
在示例中int (*a)[10];,a指向一个数组,*a的类型为int[10],则a + 1相当于a + sizeof(int[10]) * 1,也就是让a指向下一个int[10]。
如果要让指针的最小单位为字节可以把指针强制转换为char*指针或者转换为uint64_t(32位机是uint32_t)再进行运算
追问
指针的加减运算的最小单位是指针指向的类型不是字节。
这个特性是c/c++的原因对吧?
GTA小鸡
高粉答主

2020-07-23 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
a是一个数组指针,指向一个int[10]的数组,所以a+1自然指向下一个int[10]数组。
追问
a是一个指针,那么他就是一个8位的数(地址),当a+1时候不应该是地址+1吗。
追答
a+1代表向后移动一个a所指类型长度的距离
如果a是int指针,那就移动一个int长度
如果a是char指针,那就移动一个char长度
如果a是int[10]指针,那就移动一个int[10]长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式