十、变量

 变量:变量名由字母、数字和下划线组成,不能以数字开头,不得与C语言中关键字,如int、char重名;

 在程序运行时,变量占据存储空间的大小由其数据类型决定;变量名从某种意义上来说,就是存储空间

 给与用户的抽象定义;

 变量在内存中的首地址,称为变量的地址;

 变量的定义:在使用时,必须预先说明它们的存储类型和数据类型,定义的一般形式为:

 <存储类型>    <数据类型>   <变量名>

存储类型关键字分别为auto、register、static、extern,下面让我们分别介绍
1.auro 说明的变量只能在某个程序范围内使用,通常在函数体内或函数的复合语句内,如果用户不给定
初始值,则默认为随机值;如auto int k; 则K为int取值范围内的随机值;
下面我们来举例说明:
编译以上程序,系统会给出随机的值,并给予警告未初始化;
再让我们看下别的例子,如下面这个程序:
编译程序,程序第9行报错变量a未经定义,由此可见,auto修饰的变量只能在其程序范围内使用,我们通常
称之为局部变量;
2.register称为寄存器型,register变量是想将变量放入CPU的寄存器中,这样可以加快程序的运行速度,如果
申请不到就使用一般内存,这时同auto;
register变量必须时能被CPU所接受的类型,这通常意味着register变量必须是一个单个的值,并且长度应该
小于等于整型int的长度,如CPU本身是32位,另外,使用register定义的变量不能用&来获取地址;
下面我们来看一个例子:
 如上程序编译报错,register修饰的寄存器变量不得使用&来寻址;
 3.static存储类型:称为静态存储类型的变量,可在函数内外均可使用,通常称之为全局变量,如果未赋初值,
 则系统默认为0;
 它有以下特点:在内存中以固定地址存放的,而不是以堆栈的形式存放,只要程序没结束,就不会随着定义
 它的程序结束而消失,它下次再调用函数,该函数变量不再重新说明,而且还保留上次调用存入的值;
 下面我们看一个例子:
变量每次进入while循环后,变量均会初始为0;下面将变量使用static修饰,让我们看下结果:
 4.extern存储类型:当变量再一个文件中的函数体外说明,所有其他文件中的函数或程序段均可引用
 这个变量;一般称为外部参照引用型,使用extern修饰的变量是想引用在其他文件中函数体外部说明
 的变量;
 通俗的来讲,就是在文件1中声明定义了变量a,如果想在文件2中使用变量a,那变量a前面必须使用
 exern修饰,否则无法使用,并且编译时必须将两个文件一起编译;下面我们来看一个例子:
 
 

   上面是两个程序extern.c和extern1.c两个文件中的程序,必须在程序中使用extern修饰变量a

 另外值得提的是:gcc编译时,需要将有关系的文件放在一起编译;
     
  在程序文件中,如果使用了外部声明的变量,要在变量前加extern;
static修饰的全局变量,其他文件无法使用;下面我们看下例子:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值