我有我的C程序
main() {
int arr[] = {1, 2, 3, 4};
printf("%d", *arr);
arr++;
printf("%d", *arr);
}
一個錯誤,當我編譯此代碼我得到的左值所需錯誤。爲行與ARR ++。 任何幫助!
我有我的C程序
main() {
int arr[] = {1, 2, 3, 4};
printf("%d", *arr);
arr++;
printf("%d", *arr);
}
一個錯誤,當我編譯此代碼我得到的左值所需錯誤。爲行與ARR ++。 任何幫助!
++
和--
的前綴和後綴版本的操作數必須是可修改的左值。不幸的是,像arr
這樣的數組表達式是非-可修改的左值,因此是你的錯誤信息。
如果要使用指針表達式來遍歷數組,則必須聲明第二個指針並將其設置爲指向數組的第一個元素。
int *p = arr; // or &arr[0] - in this context they evaluate to the same thing
arr
是一個常數,你不能改變它的值。您可以添加
int *p = arr;
然後做一個
p++;
你應該在這裏解釋一下,「arr」不僅僅是一個常量 - 它是一個數組,而不是一個指針。儘管C使得數組和指針看起來很相似,但它們不是同一種東西 - 你不能增加一個數組。 – Perry 2012-02-27 17:47:20
lvalue
通常指的是賦值(=)運算符左側的值。由於arr++
是arr = arr + 1
的縮寫,因此它就是指它。
基本上,arr是一個數組,並且不支持更改數組的值。我想你想要一個指向數組的指針。指針可以按代碼嘗試的方式遞增。
數組不是指針。指針不是數組。 – 2012-02-27 17:13:33
請顯示最小的整個代碼。而一個數組是一個指針常量,你不能增加該指針。 (你可以將它分配給其他指針並增加其他指針)。 – 2012-02-27 17:13:35
這是功課嗎?因爲它看起來不像你想要做的事情。 – trutheality 2012-02-27 17:14:40