新手入门C语言第十章:C作用域规则

C 范围规则

在任何类型的编程中,作用域是程序中定义的变量存在的区域,超出该区域就无法访问变量。 C语言中有三个地方可以声明变量:

函数或块内的局部变量 形式参数的函数参数定义中所有函数外的全局变量

我们来看看什么是局部变量、全局变量和形参。

局部变量

在函数或块中声明的变量称为局部变量。它们只能由函数或代码块内的语句使用。局部变量在函数之外是不可知的。下面是使用局部变量的示例。这里所有的变量 a、b 和 c 都是 main() 函数的局部变量。

实例

#include  
int main ()
{
   /* 局部变量声明 */
   int a, b;  
   int c;
    
   /* 实际初始化 */ 
   a = 10;  
   b = 20;  
   c = a + b;    
   printf ("value of a = %d, b = %d and c = %dn", a, b, c); 
    
   return 0;
 }

全局变量

全局变量定义在函数之外,通常在程序的顶部。全局变量在程序的整个生命周期都有效,可以在任何函数内访问。

全局变量可以被任何函数访问。也就是说,全局变量在声明后在整个程序中都是可用的。以下是使用全局变量和局部变量的示例:

实例

#include 
/* 全局变量声明 */ 
int g;  
int main ()
{
  /* 局部变量声明 */
  int a, b;    
  /* 实际初始化 */ 
  a = 10;  
  b = 20;  
  g = a + b;  
  
  printf ("value of a = %d, b = %d and g = %dn", a, b, g);    
  return 0;
 }

在一个程序中,局部变量和全局变量可以同名,但在一个函数中,如果两个名字相同,则使用局部变量值,不使用全局变量。这是一个例子:

在程序中,局部变量和全局变量的实例

#include  
/* 全局变量声明 */ 
int g = 20;   
int main ()
{ 
  /* 局部变量声明 */
  int g = 10;    
 
  printf ("value of g = %dn",  g);   
 
  return 0; 
}

上述代码编译执行后,会产生如下结果:

value of g = 10

形式参数

函数的参数,即形参,在函数内部被视为局部变量,如果与全局变量同名,则优先使用。这是一个例子:

实例

#include 
 /* 全局变量声明 */ 
int a = 20;   
int main ()
{
  /* 在主函数中的局部变量声明 */
  int a = 10;  
  int b = 20;  
  int c = 0;   
  int sum(int, int);    
 
  printf ("value of a in main() = %dn",  a);   
  c = sum( a, b);   
  printf ("value of c in main() = %dn",  c);    
 
  return 0; 
}
/* 添加两个整数的函数 */ 
int sum(int a, int b)
{
   printf ("value of a in sum() = %dn",  a);    
   printf ("value of b in sum() = %dn",  b);    
  
   return a + b; 
}

上述代码编译执行后,会产生如下结果:

内存中全局变量和局部变量的区别:

初始化局部和全局变量

定义局部变量时,系统不初始化,必须自己初始化。定义全局变量时,系统会自动初始化如下:

数据类型初始化默认值

int

字符

浮动

正确初始化变量是一种很好的编程习惯,否则有时程序可能会产生意想不到的结果,因为未初始化的变量会导致内存位置中已经存在一些垃圾值。

搜索

复制

© 版权声明
THE END
喜欢就支持一下吧
点赞184赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容