这个指针操作函数的解释

时间:2017-04-16 19:02:40

标签: c++ pointers

我正在学习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会发生什么吗?

1 个答案:

答案 0 :(得分:0)

p仍然指向a[0],因为在my_fun中只修改了指针的本地副本。 如果要在p中增加my_fun,可以将指针传递给指针。

void my_fun (int **p) {
    **p = 0;
    (*p)++;
    **p = 4;
    (*p)++;
}

然后调用my_fun (&p);