全局变量作为 C 中函数调用的参数



"在函数参数中传递全局变量时,是通过引用还是值传递的?

它是按值传递的。以下代码显示情况确实如此:

#include <stdio.h>
int global = 5;
void foo(int bar){
    bar = 6;
    printf("bar = %dnglobal = %d", bar, global);
}
int main(){
    foo(global);
    return 0;
}

输出为:

柱 = 6

全局 = 5

在这个代码中global作为参数传递给foo,我们称这个参数为bar。因此,在开始时,globalbar是两个不同的变量,其值均为 5。但随后bar被赋值 6,并且由于参数是按值引用的,因此global保持在 5。

要通过引用传递变量,请使用指针:

#include <stdio.h>
int global = 5;
void foo(int *bar){
    *bar = 6;
    printf("bar = %dnglobal = %d", *bar, global);
}
int main(){
    foo(&global);
    return 0;
}

现在输出为:

柱 = 6

全局 = 6

局部变量和全局变量都通过 C 中的值传递给函数。如果需要通过引用传递,则需要使用指针。

变量

如何传递/必须传递取决于函数,而不是变量:

int gMyVar;
void foo(int a);        // says "call me by value"
void bar(int *b);       // says "call my by reference"

foo 需要传递一个 int。您必须将其称为 foo(gMyVar )。

bar需要一个指向 int 的指针。您必须将其称为 bar(&gMyVar) .

因此,正如其他答案所示,C 总是传递一个值,但是,该值可以是变量的值(按值调用),也可以是指向变量的指针(按引用调用)。

首先,为什么我们需要在函数中传递全局变量? 如果您不知道,我们可以直接在程序中的任何位置访问它。

#include <stdio.h>
int x = 10;  //global variable
void fun()
{
 printf("%d",x);    // direct access
}
int main(void) {
    fun();     // no argument required
    return 0;
}

输出

10

对于演示 http://ideone.com/VLWqNO

相关内容

  • 没有找到相关文章

最新更新