【C语言】

发布时间 2024-01-13 22:06:00作者: hzyuan

在不同的函数之间传递数据时,可以使用如下方法:

  • 参数:通过形参和实参
  • 返回值:用 return 语句返回计算结果
  • 全局变量

全局变量与局部变量

全局变量:函数之外定义的变量称为全局变量(外部变量);
局部变量:在一个函数内部定义的变量称为局部变量(内部变量)。
全局变量使用:

#include <stdio.h>

int i = 10; //全局变量

void print() {
    printf("print i=%d\n",i);
}

int main() {
    printf("main i=%d\n",i);
    i=5;
    print();
    return 0;
}

全局变量存储在数据段,所以对于 main 函数和 print 函数都是可见的。

全局变量在整个进程的执行过程中始终有效,不会因为某个函数执行结束而消失。
局部变量存储在自己的函数对应的栈空间内,函数执行结束后,分配给该函数局部变量的空间将被释放。

如果局部变量和全局变量重名,将采取就近原则,即实际获取和修改的值是局部变量的值。

#include <stdio.h>

int i = 10; //全局变量

void print() {
    printf("print i=%d\n",i);
}

int main() {
    printf("main i=%d\n",i);
    int i=111;
    print(); 
    printf("main i=%d\n",i);
    return 0;
}

执行结果:

全局变量的注意点:

  • 全局变量可以为本文件中的其他函数共用,它的有效范围是从定义变量的位置开始到本源文件结束。
  • 全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。
  • 使用全局变量过多会降低程序的清晰性,在各个函数执行时都可能改变全局变量的值,程序容易出错。
  • 函数在执行时依赖于其所在的全局变量,如果将一个函数移到另一个文件中,还需要将有关全局变量也移过去。此时,若该全局变量与其他文件的变量同名,就会出错。
    全局变量的滥用会降低程序的可靠性和通用性,因此一般约定通过”实参->形参”进行联系,而不使用全局变量。

局部变量的注意点:

  • 局部变量只在本函数范围内有效。
  • 不同函数中可以使用相同名字的变量,他们存在于各自函数的栈空间内,互不干扰。
  • 局部变量的有效范围是离自己最近的花括号内,如在for循环内定义的局部变量是不能用在for循环之外的。
  • 形式参数也是局部变量,