为什么这个函数不改变指针值?

时间:2018-02-13 01:28:20

标签: c++ pointers

输出打印相同的值 - 8; 我无法理解为什么* p = 15不会修改指针值?

void foo(int *p) {
    int q = 19;
    p = &q;
    *p = 15;
}
int main() {
    int x = 8;
    int *y = &x;

    foo(y);
    cout << x << " " << *y << endl;

    cin.get();
}

2 个答案:

答案 0 :(得分:1)

在执行函数

中的follow指令时,您已更改q的地址
p = &q

答案 1 :(得分:0)

修改指向的值,但是当它执行此操作时,指针指向q中的变量foo,而不是变量{{1}在x中(保持不变)。

这个难题的另一部分是,那时,有问题的指针是原始指针的副本main中的pfoo中的y之间没有任何关系,除了mainp&#开始生命39; s值。