【发布时间】:2016-12-15 00:10:12
【问题描述】:
char arr[] = "Hello";
arr = arr + 1; // error occurs
据我所知,具有数组类型的表达式被转换为指向数组初始元素的指针类型。因此,我希望arr = arr + 1(指向数组的第一个元素(arr)的指针成为指向数组的第二个元素的指针)能够工作。为什么这在 C 中不起作用?
【问题讨论】:
-
因为谁教你的比数组和指针完全一样,过于简单化到了错误的地步。
-
为什么我不能
int i; &i = &i + 1;?&i是一个指针,对吧? -
指针算法没问题;问题在于作业。
-
@MooingDuck 我确实意识到右侧发生了什么,但这不是 OP 的问题。问题在左边。数组不可赋值。因此,只要问题出在数组本身,就没有理由在这里谈论指针。即使 Array 名称是一个 Pointer,这并不意味着应该谈论这部分。下面的答案涵盖了所有这些。