我使用这个功能遍历任何数组:如何使用指针函数写入/读取阵列
void iterate(int len, int arr[], void (*pointer) (int, int)) {
for (int i = 0; i < len; ++i) {
pointer(i, arr[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)
您的函数指针有错误的签名。您按值传递第二个int。如果修改该值,则不会更改原始数组。 – drescherjm
无论是错字还是重复[通过引用传递与按值传递有什么区别?](https://stackoverflow.com/questions/373419/whats-the-difference-between-passing-by-reference- vs-passing-by-value) – user4581301