C 中是否可以从另一个函数访问一个函数的参数?

问题描述 投票:0回答:1

是否可以从另一个函数中的函数访问变量的值。您可以假设第一个函数是在主函数中调用的。 这是一个例子:

int foo (int x) {
    int z;
    // Do things...
    return 0;
}

int bar () {
    // Access value of z here.
    // Do more things...
    return 0;
}
c function variables
1个回答
0
投票

foo
之外,其局部变量不存在。这就是它作为局部变量的全部意义。

如果您需要在函数之间传递状态,您有两种基本方法:

全局变量

int z = 4;

void foo(int x) {
    z = z + x;
}

void bar(void) {
    z = z * 2;
}

int main(void) {
    foo(6);
    bar();

    printf("%d\n", z);
    // prints 20
}

尽可能避免这种情况。它使调试变得更加困难,因为如果不考虑其他函数可能对该全局变量的状态执行的操作,就无法测试函数。

通过函数参数和返回值

更好的方法是通过函数的参数和返回值传递信息。对于小型数据类型和简单操作,最佳实践可能是按值传递变量并从函数返回更新的值。

对于较大的数据类型,复制效率低下,或者需要更新多个参数,您可以将指针传递给另一个值,并使用它来更新它指向的值。

传递指针的示例:

void foo(int *z, int x) {
    *z = *z + x;
}

void bar(int *z) {
    *z = *z * 2;
}

int main(void) {
    int z = 4;
    foo(&z, 6);
    bar(&z);

    printf("%d\n", z);
    // prints 20
}
© www.soinside.com 2019 - 2024. All rights reserved.