C语言 全局变量和局部变量区别

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门


一.全局变量和局部变量简介


1.全局变量简介

在所有函数外部定义的变量称为全局变量(Global Variable)它的作用域默认是从定义变量的位置到本源文件结束都有效。

int a, b;  //全局变量
void func1(){

    int c, d;  //局部变量
    //TODO:
}

int main(){

    int e, f;  //局部变量
    //TODO:
    return 0;
}

2.局部变量简介

定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。


int f1(int a){
    int b,c;  //a,b,c仅在函数f1()内有效
    return a+b+c;
}
int main(){
    int m,n;  //m,n仅在函数main()内有效
    return 0;
}

二.全局变量和局部变量注意事项


1.局部变量(Local Variable)也称为内部变量,其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的


2.全局变量(Global Variable)它的作用域默认是从定义变量的位置到本源文件结束都有效,例如:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 全局变量和局部变量区别
//@Time:2021/07/18 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/ 


#include <stdio.h>



void func1(){
    x += 10;
    y += 20;  
    printf("函数:%s  中 x = %d   y = %d \n",__FUNCTION__,x,y); 
    
}

int x = 10;
int y = 20;

void func2(){
    x += 10;
    y += 20;
    printf("函数:%s  中 x = %d   y = %d \n",__FUNCTION__,x,y);
    
}
int main(){
    
    func1();
    func2();
    printf("函数:%s  中 x = %d   y = %d \n",__FUNCTION__,x,y); 
	
    return 0;
}
/*
输出:

main.cpp: In function ‘void func1()’:
main.cpp:6:5: error: ‘x’ was not declared in this scope
    6 |     x += 10;
      |     ^
main.cpp:7:2: error: ‘y’ was not declared in this scope
    7 |  y += 20;
      |  ^

*/  

3.如果局部变量名字和全局变量名字相同,函数内部默认操作的是局部变量,举个例子:


/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 全局变量和局部变量区别
//@Time:2021/07/18 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/ 


#include <stdio.h>

int x = 10;   //全局变量
int y = 20;   //全局变量

void func1(){
    int x = 8;   //局部变量(与全局变量名字相同)
    y += 20;     //全局变量
    printf("函数:%s  中 x = %d   y = %d \n",__FUNCTION__,x,y); 
    
}

void func2(){
    int x = 5;  //局部变量(与全局变量名字相同)
    y += 20;    //全局变量
    printf("函数:%s  中 x = %d   y = %d \n",__FUNCTION__,x,y);
    
}
int main(){
    
    func1();
    func2();
    printf("函数:%s  中 x = %d   y = %d \n",__FUNCTION__,x,y); 
	
    return 0;
}

/*
输出:

函数:func1  中 x = 8   y = 40 
函数:func2  中 x = 5   y = 60 
函数:main  中 x = 10   y = 60 
*/

三.猜你喜欢

  1. C语言 数组下标越界和内存溢出区别
  2. C语言 使用指针遍历数组
  3. C语言 指针和数组区别
  4. C语言 指针数组和数组指针区别
  5. C语言 野指针
  6. C语言 函数值传递和址传递
  7. C语言 函数不定长参数
  8. C语言 函数指针
  9. C语言 指针函数
  10. C语言 回调函数 callback
  11. C语言 #pragma once
  12. C语言 #include <> 与 #include “” 区别
  13. C语言 const 修饰函数参数
  14. C语言 const 和 define 区别
  15. C语言 #运算符
  16. C语言 ##运算符
  17. C语言 __VA_ARGS__
  18. C语言 ##__VA_ARGS__
  19. C语言 函数不定长参数 ##__VA_ARGS__经典案例
  20. C语言 va_start 宏
  21. C语言 va_end 宏
  22. C语言 va_arg 宏
  23. C语言 vprintf 函数
  24. C语言 va_start / va_end / va_arg 自定义 printf 函数
  25. C语言 main 函数
  26. C语言 main 函数参数 main(int argc, char *argv[])
  27. C语言 exit 函数
  28. C语言 abort 函数
  29. C语言 assert 函数
  30. C语言 局部变量
  31. C语言 全局变量
  32. C语言 全局变量和局部变量区别

未经允许不得转载:猿说编程 » C语言 全局变量和局部变量区别
喜欢(2) 打赏

评论抢沙发

不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!!

开始学习

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏