作用域和声明生命

2023-10-11 21:01:05 浏览数 (1)

作用域

一段代码中存在变量的可使用范围,超出这个范围,这个变量就不可以被访问了

1.局部变量

在某个函数的内部声明的变量称为局部变量。这些变量只能被申明的函数使用。局部变量在函数外是不能使用的。

代码语言:javascript复制
#include <stdio.h>
 
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;
}

a b c只能在main函数的范围内使用,超出这个函数的范围,这三个变量将无法被访问

2.全局变量

全局变量是定义在函数的外部,一般都是定义在程序的顶部。全局变量在整个函数运行的时候都是有效的,在任意的函数的内部都能访问很调用全局变量。

代码语言:javascript复制
#include <stdio.h>
 
/* 全局变量声明 */
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;
}

 在程序中,局部变量名和全局变量名是可以相同的,但是在函数内,如果两个名字一样的话,会用局部变量的值,全局变量不会被使用。 `C  #include <stdio.h>

/ 全局变量声明 / int g = 20;

int main () { / 局部变量声明 / int g = 10;

printf ("value of g = %dn", g);

return 0; }

代码语言:javascript复制
     value of g = 10
### 3.形参
函数的参数,形式参数,被当作该函数的局部变量,如果和全局变量同名的话,他们会被优先使用。

include <stdio.h>

/ 全局变量声明 / 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) {

代码语言:javascript复制
printf ("value of a in sum() = %dn",  a);
printf ("value of b in sum() = %dn",  b);

return a   b;

}

代码语言:javascript复制
## 生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。因为我们已经知道栈是怎么样的情况了,就可以更好地理解生命周期了
### 1.局部变量
通俗地讲局部变量的声明周期从{}结束而消失,{}就表示一个代码块,出了这个块的变量也就超出了作用域,生命周期也是会结束,因为超出了我们定义的范围。进入局部变量范围生命开始,出局部范围生命结束。
### 2.全局变量

0 人点赞