![](/img/trans.png)
[英]How can I read values of a pointer, being this pointer the return of a function?
[英]How can I use a pointer function to write/read an array
我正在使用此函數來迭代任何數組:
void iterate(int len, int arr[], void (*pointer) (int, int) ) {
for (int i = 0; i < len; ++i) {
pointer(i, arr[i]);
}
}
但在我的內部功能中:
指針(i,arr [i]);
我無法修改arr [i]並為其分配新值。 這是我的代碼:
void iterate(int len, int arr[], void (*pointer) (int, int) ) {
for (int i = 0; i < len; ++i) {
pointer(i, arr[i]);
}
}
void setCode(int index, int value) {
cout << "[" << index << "]: ";
cin >> value;
}
void showCode(int index, int value) {
cout << index << " ---- " << value << endl;
}
int main() {
int len;
cout << "length: ";
cin >> len;
int code[len];
void (*setCodePointer) (int, int) = setCode;
void (*showCodePointer) (int, int) = showCode;
iterate(len, code, setCodePointer);
iterate(len, code, showCodePointer);
}
如果我執行並將長度設置為2
[0]到1和[1]到2
我得到:
0 ---- 1495894288(應為1)
1 ---- 32767(應為2)
您的函數指針簽名
void (*pointer) (int, int)
是一個函數,該函數按value接受兩個整數,並且不返回任何值 。 這意味着該函數將接收其每個參數的副本,因此在函數結束時,對變量所做的任何更改都將丟失。
相反,您需要通過reference傳遞第二個int
參數,如
void (*pointer) (int, int&)
並更改setCode()
和showCode()
函數以使其匹配。
此int code[len];
無效的C ++(有效的C99)。 並且您的set函數不起作用,因為您通過值傳遞了要設置的內容,因此讀取的值將被丟棄並且不會存儲在數組中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.