[英]Changing value of an array with function call
假設我有一個數組
int x[5] = {1,2,3,4,5};
還有一個功能
int at(int p[],const int i){
return p[i];
}
而我正試圖訪問諸如的元素
cout << at(x,4);//works fine,output is 5
cin >> at(x,3);// error
我知道它只返回該索引的常量,我們無法更改常量。 那么有沒有辦法以某種方式修改此函數以獲得數組元素的完全訪問權限,以便能夠更改指定索引上的值。
只需更改函數即可返回引用。 改變這個:
int at(int p[],const int i){
對此:
int &at(int p[], const int i) {
我知道它只返回該索引的常量,我們無法更改常量。
那不是問題。 問題是如果函數只返回一個int
,那么你將返回一個rvalue。 然而, cin >>
需要一個左值,它是一個存儲在存儲器中可識別位置的對象。 x[3]
是一個lvalue
,通過返回lvalue
的引用,我們返回這樣一個左值。 通過返回一個int
,我們只返回x[3]
中的值的副本,並且該副本沒有地址,它在語句的末尾消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.