指针如何在函数参数中传递?用示例程序?

时间:2014-12-26 20:18:20

标签: c++ c

我想知道函数参数中指针的流程。请帮助我逐行执行以下操作及其流程,

    #include <stdio.h>

    int main() {

        int i = 97, *p = &i;

        foo(&i); printf("%d ", *p);
    }

    void foo(int *p) {
        int j = 2;

        p = &j;
        printf("%d ", *p);
    }

1 个答案:

答案 0 :(得分:2)

首先,在调用它之前,你应该让编译器看到foo()的声明

#include <stdio.h>

void foo(int *p); // <<<<<<<<<< Declare your function first!

int main() {

    int i = 97, *p = &i;

    foo(&i); printf("%d ", *p);
}

void foo(int *p) {
    int j = 2;

    p = &j;
    printf("%d ", *p);
}

到达 this stage 时使用它。

foo()内,您只是将本地堆栈上的p更改为指向j,而不会影响pi来自{{} 1}},因为main已经通过值(复制)传递。

如果要从函数内部更改p的值,则需要以这种方式更改它:

i