gpt4 book ai didi

c - C中使用anArray++等表达式时数组和指针的区别

转载 作者:行者123 更新时间:2023-12-04 12:13:10 25 4
gpt4 key购买 nike

我目前正在使用“C Primer Plus 第六版”一书学习 C。

在关于数组和指针的章节中,作者指出

As far as C goes, the two expressions ar[i] and *(ar+i) are equivalent in meaning. Both work if ar is the name of an array, and both work if ar is a pointer variable. However, using an expression such as ar++ only works if ar is a pointer variable.

我认为在 c 中,ar[0]*(ar + 0) 是等价的,它们都等于数组索引 0 中包含的值。但是为什么像 ar++ 这样的表达式只有当 ar 是一个指针变量时才有效?我真的坚持其背后的逻辑。

最佳答案

假设 arr 是一个数组并且 arr++ 对它起作用。那么,应该怎么办?如果它是递增的,现在,指向数组第一个元素的指针在哪里?因此,指向数组第一个元素的数组的值可以递增是没有意义的,这不再符合逻辑。

另一方面,如果arr 是一个指针,它可以移动并设置到其他地方。因此,您可以更改指针的值是有意义的。

总之,尽管数组名称指向已分配数组的第一个元素这一事实是正确的,但像指针一样随时间设置或更改是没有意义的。

关于c - C中使用anArray++等表达式时数组和指针的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44690198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com