C语言中全局变量,c语言全局变量用法

  C语言中全局变量,c语言全局变量用法

  变量的有效范围称为变量的作用域。C中所有的量都有自己的作用域。变量的解释方式不同,作用域也不同。

  C语言中的变量按照作用域可以分为两种,局部变量和全局变量。

  局部变量

  局部变量也称为内部变量。局部变量在函数中定义。它的作用域仅限于函数,离开函数后使用这个变量是非法的。例如,下面的伪代码:

  int f1(int a){ int b,c;/* a,b,c只在函数f1 () */}int f2(int x){ int y,z;/* x,y,z只在函数f2 () */}int main(){ int m,n;/* m,n仅在函数main () */}内有效

  函数f1中定义了三个变量,A是形参,B和C是一般变量。在f1的范围内,A,B,C有效,或者变量A,B,C的范围限定在f1内。同样的,X,Y,Z的范围限定在f2。m和n的范围仅限于主函数。

  关于局部变量的范围,还应说明以下几点:

  1.主函数中定义的变量只能在主函数中使用,不能在其他函数中使用。同时,在其他函数中定义的变量不能在主函数中使用。因为主函数也是函数,和其他函数有并行关系。这和其他语言不一样,要注意。

  2.参数变量是属于调优函数的局部变量,自变量变量是属于主调优函数的局部变量。

  3.允许在不同的函数中使用相同的变量名。它们代表不同的对象,分配不同的单元,这样互不干扰,不会混淆。和前面的例子一样,形参和实参的变量名都是N,这是完全允许的。

  在不同函数中使用同名局部变量的示例:

  # include stdio . h int function 1(inti){ I=I 5;printf(function 1()中 I 的值为:%d\n ,I);returni} int function 2(inti){ I=I * 3;printf(function 2()中 I 的值为:%d\n ,I);返回(一);} int main(){ inti=7;职能1;printf( I in main()的值为:%d\n ,I);职能2;printf( I in main()的值为:%d\n ,I);系统(“暂停”);return0}

  运行结果是:

  4.变量也可以在复合语句中定义,它们的作用域只在复合语句中。例如,下面的伪代码:

  int main(){ int s,a;/*……*/{ int b;s=a b;/* … *//* b作用域*/}/*… *//* s,a作用域*/}

  在复合语句中使用局部变量的示例:

  # include stdio . h int main(){ inti=2,j=3,k;k=I j;{ intk=8;Printf(复合语句中k的值为:%d\n ,k);} printf(主函数中k的值为:%d\n ,k);系统(“暂停”);return0}

  运行结果:

  在这个程序中,I,J和K变量在main中定义,其中K没有给定初始值。在复合语句中,定义了一个变量k,初始值为8。需要注意的是,这两个K不是同一个变量。K由复合语句外的主行为定义,而K由复合语句内的主行为定义。所以程序第3行的k是由main定义的,它的值应该是5。第6行输出k的值,它在一个复合语句中。复合语句中定义的k起作用,其初始值为8,所以输出值为8。第8行输出I和K值。I在整个程序中有效。I在第6行被赋值为3,所以输出也是3。第八行在复合语句之外,输出k应该是main定义的k。从第三行得到的k值是5,所以输出也是5。

  全局变量

  全局变量也称为外部变量,是在函数外部定义的变量。它不属于任何函数,它属于一个源程序文件。它的范围是整个源程序。

  当在函数中使用全局变量时,通常应该对它们进行解释。只能使用函数中解释的全局变量。全局变量的描述符是extern。但是,在函数之前定义的全局变量可以在函数中使用而无需解释。例如,下面的伪代码:

  int a,b;/*外部变量*/void f1(){ /*函数F1 */* …… */} float x,y;/*外部变量*/int fz(){ /*函数FZ */*…………………………………………………………………………………………………………………

  从上面的例子可以看出,A,B,X,Y都是定义在函数外部的外部变量,都是全局变量。但X和Y是在函数f1之后定义的,f1中没有对X和Y的解释,所以在f1中无效。a和B是在源程序前面定义的,所以在f1,f2,main中不用解释就可以使用。

  所有变量的示例:

  输入立方体的长度、宽度和高度l、w和h。求三个面x*y,x*z,y * z的体积和面积。

  #include stdio.h int s1,s2,S3;int vs(inta,intb,intc){ intv;v=a * b * c;S1=a * b;S2=b * c;S3=a * c;returnv} int main(){ intv,l,w,h;Printf(请输入长度、宽度和高度,用逗号分隔:\ n );scanf(%d,%d,%d ,l,w,v=vs(l,w,h);Printf(卷:%d,区域1:% d,区域2:% d,区域3:% d \ n ,v,S1,S2,S3);系统(“暂停”);return0}

  运行结果:

  当外部变量与局部变量同名时。如果一个外部变量在同一个源文件中与一个局部变量同名,那么这个外部变量就被“封锁”在了局部变量的范围内,也就是不起作用。

  例如,下面的代码:

  #include stdio.h int a=3,b=5;/* a,b是外部变量*/int max(inta,intb){ /* a,b是外部变量*/intc;c=a b?甲:乙;returnc} int main(){ inta=8;printf(%d\n ,max(a,b));系统(“暂停”);return0}

  运行结果:

  总结:

  全局变量:

  1.在函数外定义。

  2、全球可见

  3、一般定义在程序的顶部。

  4.存储在内存中的全局数据区

  5.如果在定义时没有初始化,它的值为0。

  6.如果一个函数修改了全局变量,所有其他函数都会看到修改后的变量。

  局部变量:

  1.在函数中定义。

  2.仅在此功能中可见。

  3、存储在堆栈区,当函数退出时,局部变量消失。

  4.不同的函数可以使用相同的变量名。

  5.如果局部变量没有显式初始化,它们的内容是不可预测的。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: