「C 基础」变量类型

2016-05-16  本文已影响32人  _凉风_

C 语言内存分配


变量的属性

一、变量的作用域

C 语言根据 变量 作用域 的不同,将变量分为 局部变量全局变量

1. 局部变量

2. 全局变量

int a;    //全局变量
 
 int main ()
 {
     int b; //局部变量
     return 0;
 }

二、变量的存储类型「变量存储在什么地方」

决定了变量何时创建、何时销毁以及它的值能保持多久,即 决定了变量的生命周期

1. 自动变量

定义

生命周期

void test(int a, int b) //a, b 为自动变量
{
  int c = a + b; //c 也为自动变量
  auto int d; //d 也为自动变量
}

2. 静态变量

定义

生命周期

#include <stdio.h>
 
 int a; //静态变量
 
 void test() {
     static int b = 0; //静态变量:只能创建一次,执行一次,下次调用时不会被重新初始化为0
     b++; //只改变了它的存储类型「生命周期」,并没有改变它的作用域
          //变量 b 还是只能在 test 函数内部使用
     
     int c = 0; //自动变量
     c++;
        
     printf("b=%d, c=%d \n", b, c);
 }
 
 int main() {
     int i; //自动变量
     for (i = 0; i<3; i++) {
         test();
     }
     
     return 0;
 }

输出结果为:b=1, c=1
      b=2, c=1
      b=3, c=1

3. 寄存器变量

定义

生命周期

注意

  1. 计算机中寄存器数目有限,不能使用太多的寄存器变量
  2. 如果寄存器使用饱和,程序将寄存器变量自动转换为自动变量处理
  3. 为了提高运算速度,一般会将一些频繁使用的自动变量定义为寄存器变量,这样程序尽可能地为它分配寄存器存放,而不用内存

三、static 和 extern 关键字

static 和 extern 可以修饰

上一篇下一篇

猜你喜欢

热点阅读