這裏是我的代碼:爲什麼不能將* pointer + offset用作l值? ( 「錯誤:非左值賦值」)
void doubleValuesInArray(int *pointer) {
for (int n = 0; n < 2; n++) {
int a = (*pointer+n);
a = a * 2;
*pointer+n = a;
}
}
int main(int argc, char** argv) {
int myArray[] = {1,2};
doubleValuesInArray(myArray);
cout<<myArray[0]<<endl;
return 0;
}
,輸出是:
main.cpp中:在功能`無效doubleValuesInArray爲(int *)': main.cpp:19:錯誤:賦值時非左值 make [2]:* [build/Debug/Cygwin-Windows/main.o]錯誤1 make [1]: [.build-conf]錯誤2 make:* * [.build-impl]錯誤2
我的問題是:
int a = (*pointer+n);
工作得很好。變量'a'使用* pointer + n從數組中獲取值0和1。
然而
*pointer+n = a;
似乎並沒有工作。
如果我使用 pointer [n] = a;它也適用於 。
爲什麼我的第一種方法不起作用?
可有人建議爲,因此這個問題的一個更好的標題可以出現在搜索中? –