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

How pointer passed in Fuction arguments ? With example Program?

本文关键字:程序 例程 函数 参数 指针      更新时间:2023-10-16

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

    #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);
    }

首先,你应该让编译器看到 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);
}

当你到达这个阶段时,玩它。

foo()内部,您只是更改本地堆栈上的p以指向j,不会影响p,也不会影响maini,因为p已被值(副本)传递。

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

void foo(int *p) {
    *p = 2;
    printf("%d ", *p);
}