首页 / 财经 / 股票 / 正文

二级c语言(C语言二级必备知识,全局变量和局部变量,一看就会的C语言知识。)

放大字体  缩小字体 来源:海蓝之谜价格 2026-04-15 13:32  浏览次数:6

引言:

定义变量一般有三种形式:

  1. 在函数的开头定义
  2. 在函数的外部定义
  3. 在复合语句中定义

(1)主函数中定义的变量(如m,n)也只在主函数中有效,并不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。
(2)不同函数中可以使用同名的变量,它们代表不同的对象;互不干扰。例如,上面在f1函数中定义了变量x,倘若在f2函数中也定义变量x,它们在内存中占不同的单元,互不混淆。
(3)形式参数也是局部变量。例如上面f1函数中的形参a,也只在f1函数中有效。其他函数可以调用f1 函数,但不能直接引用f1函数的形参a(例如在其他函数中输出a的值是不行的)。
(4)在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。
int main ()
{ int a,b;
{ int c;
c=a+b; // c在此复合语句内有效a,b在此范围内有效
}
变量c只在复合语句(分程序)内有效,离开该复合语句该变量就无效,系统会把它占用的内存单元释放。

我们知道程序的编译单位是源程序文件,而一个源程序可以包含若干个函数。在函数内部定义的变量称为局部变量,在函数外部定义的变量成为全局变量,也叫全程比变量。 全局变量可以为其他函数所使用,他的作用域是从定义到源文件的的结束。

例如:    #include <stdio.h>    int a=1,b=2; void fun (void )           {           	pritnf ("%d  %d",a,b);           }    int main (){		printf (“%d   %d”,a,b);  retuen 0;}输出结果是: 1  2  1  2  

注意:

但是问题来,当我们定义了全局变量之后,又在一个函数中,定义了同名得到变量,那么这个变量的值会是多少呢?是等于全局变量还是等于局部变量呢?



内存中可供用户使用的存储空间可以分为三部分:

  1. 程序区
  2. 动态存储区
  3. 静态存储区

以上的这些值都是动态分配存储空间的,每次调用到他们的时候,就临时分配存储空间,当使用完就释放,一次在同一个程序中,利用两次动态变量,它的内存地址也可能不同。

C语言的存储类别有四种:

  1. 自动变量 (auto 变量)
  2. 静态局部变量 (static 变量)
  3. 寄存器变量 (re'gister 变量)
  4. 外部变量 (extern 变量)

我们在定义 int a ;的时候,实际上就是: auto int a ;

例如一下程序:

    #include <strdio.h>    int add (int a){				int c= 3;  			c= c+1;  return  a+c}    int main (){			}

我们可以看到当我们每次调用add函数的时候,c的值又会初始化到3,c=c+1的赋值语句,只在本次调用起作用,所以我们在这也能看出来c是动态分配的。

但是我们在对比一下程序:    #include <stdio.h>    int add (int a){		static		int c= 3;   			c= c+1;  return  a+c;}    int main (){       int a=1;			printf ("%d",add(a));}

这里就能看出static变量的区别了。

又叫寄存器变量,计算机在进行计算的时候,通常要从外部取数据,那为了提高执行效率,我们可以将变量存放在寄存器也就是在CPU的寄存器中。当程序执行的数据特别多的时候,我们能够看出明显的区别。


打赏
0相关评论
热门搜索排行
精彩图片
友情链接
声明:本站信息均由用户注册后自行发布,本站不承担任何法律责任。如有侵权请告知立立即做删除处理。
违法不良信息举报邮箱:115904045
头条快讯网 版权所有
中国互联网举报中心