c语言中的变量

一、变量种类:

外部变量
局部变量
全局变量
自动变量
寄存器变量
静态变量

 

1)外部变量可以在全局范围内访问,因此函数间可以通过外部变量交换数据,而不必使用参数表;
2)外部变量在程序执行期间一直存在;
3)外部变量必须定义在所有函数之外,且只能定义一次,定义后编译程序将为它分配存储单元;
4)在每个需要访问外部变量的函数中,必须声明相应的外部变量,说明其类型。声明是可以用extern语句显示声明,也可以通过上下文隐式声明

2. 自动变量(auto int a=8;)

什么是自动变量:定义在函数体内部的变量,也叫私有变量或者局部变量
作用域:仅限于定义它的函数体内部,函数中的每个局部变量只在函数被调用时存在,在函数执行完毕退出时消失。

 

 

 

3. 静态变量

定义:以static存储类声明的变量。
static的两种声明:
1)用static声明限定外部变量函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。通过static限定外部对象,可以达到隐藏外部对象的目的。
2)用static声明自动变量,声明后的对象的存储方式变为静态存储方式,它与自动变量的不同是,不管其所在的函数是否被调用,它一直存在,而不像自动变量那样,随着所在函数的被调用和退出而存在和消失

 

 

4. 寄存器变量

register int x;
register char c;

以上就声明了两个寄存器变量,register告诉编译器,它所声明的变量使用频率较高。其思想是将register声明的变量放到机器的寄存器中,这样可以使程序更小、执行速度更快,但编译器可以忽略此选项。
注意:
1)register声明只适用于自动变量函数的形式参数
2)过量的register声明并没有什么坏处,因为编译器可以自动忽略过量或者不支持的寄存器变量声明;
3)无论寄存器变量最终是否放到了寄存器中,它的地址都是不可以访问的。

 

 

5. 全局变量和局部变量

在某些地方我们会看到全局变量局部变量的定义,其实它们对应的就是外部变量和自动变量。
全局变量与外部变量的区别是全局变量是作用于程序中的所有地方,它是不加static的外部变量。
局部变量则与自动变量的定义完全一样

 

#include <stdio.h>

int i;             //外部变量
static int j;      //静态变量

int main()
{
    int i;         //自动变量,该变量会屏蔽外部变量i
    static int k;  //静态变量
    register int x;//寄存器变量
    return 0;
}

 

 

 

摘自:http://blog.csdn.net/qq_16923717/article/details/77483548

 
posted @ 2017-12-04 08:23  何双新  阅读(455)  评论(0编辑  收藏  举报