我正在学习C ++中的指针,这是我在网站上找到的示例代码:
#include <iostream>
#include <iomanip>
using namespace std;
void my_fun (int *p) {
*p = 0;
p++;
*p = 4;
p++;
return;
}
int main ( ) {
int a[3] = {10,20,30};
int *p = a;
cout << *p;
my_fun (p);
cout << setw(5) << a[0] << setw(5) << a[1] << setw(5) << a[2] << setw(5) << *p;
return 0;
}
我的预期结果是:10 0 4 30 30
但我得到了这个:10 0 4 30 0
你介意请解释最后一个cout会发生什么吗?
答案 0 :(得分:0)
p
仍然指向a[0]
,因为在my_fun
中只修改了指针的本地副本。
如果要在p
中增加my_fun
,可以将指针传递给指针。
void my_fun (int **p) {
**p = 0;
(*p)++;
**p = 4;
(*p)++;
}
然后调用my_fun (&p);
。