這個問題在這里已經有了答案: 請用指標解釋陣列 [關閉] (2 個回答) 1 小時前關閉。
在下面撰寫的代碼中,從 讀取時cin,我們應該在*之前使用運算子arr[i]。但是沒有它,這段代碼就可以完美運行。這是為什么?
同樣,*當我們cout用指標陣列寫入時,我們也不使用。例如,考慮堆上的多維指標陣列 -cout << vararr[i][j] << endl;這也有效。
int* variablesizedarr(int size){
int* arr = new int [size];
for(int i = 0;i < size; i ){
cin >> arr[i]; //shouldn't it be *arr[i] if the input is integers
}
return arr;
}
uj5u.com熱心網友回復:
我們應該在 arr[i] 之前使用 * 運算子
不,那會是一個錯誤。
從cppreference:
內置下標運算式
E1[E2]與運算式完全相同,*(E1 E2)除了求值順序 (C 17 起),即指標運算元(可能是陣列到指標轉換的結果,必須指向一個元素某個陣列或末尾的一個)被調整為指向同一陣列的另一個元素,遵循指標算術規則,然后取消參考。
所以要operator[]注意取消參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342669.html
