我最近剛遇到一個 a 與 a 1 不同的情況。請分析以下代碼片段:
輸入 1:
int a[] = {11, 12};
int *p = a 1;
cout << *p;
輸出 1:
12
輸入 2 :
int a[] = {11, 12};
int *p = a;
cout << *p;
輸出 2:
error: lvalue required as increment operand
有人可以向我解釋這個問題背后的原因嗎?
uj5u.com熱心網友回復:
在第一種情況下:當您傳遞陣列的名稱即 a here 時,您傳遞的是存盤在陣列中的第一個值的地址,因此當: int *p = a 1; 執行它從陣列中獲取第一個值,即 11 ,然后將 1 添加到該值,輸出為 12 。此代碼不會給您任何錯誤,因為您沒有更改有關陣列或陣列的任何內容。 在第二種情況下: 你會得到一個編譯時錯誤“lvalue required as increment operation”。在這里,您嘗試對陣列進行增量,但無法對陣列執行增量操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/352611.html
上一篇:將int陣列轉換為字串
