为何对数组指针解引用后加1得到元素值+1而非下一个数组元素?
问题拆解与解答
为什么*myArray+1的结果不是数组下一个元素456?
核心原因是运算符优先级:
- 在C语言里,解引用运算符
*的优先级比加法运算符+高,所以*myArray+1会先执行*myArray——也就是取数组首元素myArray[0]的值(123),再对这个数值做加1运算,最终得到124。 - 如果想获取数组的第二个元素(值456),需要用括号改变运算顺序,写成
*(myArray+1):数组名myArray本质是指向首元素的指针,myArray+1会偏移一个int类型的长度,指向数组第二个元素的地址,再通过*解引用就能拿到456。
为什么输出看起来“跳过了数值3”?
这是对运算逻辑的误解:这里的+1是对*myArray的完整数值做加法,不是对数字的某一位操作。123加1的结果自然是124,不存在“跳过3”的情况——它是标准的整数加法运算,不是逐位处理数字。
内容的提问来源于stack exchange,提问作者evstack
相关产品推荐
相关产品推荐

