C语言中的属性关键字

C语言里的变量可以有自己的属性,主要有auto,static,register。

auto即C语言中局部变量的默认属性,编译器默认所有的局部变量都是auto,在栈上分配空间,不能把全局变量声明为auto。

static关键字指明变量的静态属性,同时具有作用域限定符的意义。

其修饰的局部变量存储在程序静态区,修饰的全局变量作用域函数作用域只是声明的文件中,别的文件不能访问。

register关键字指明将变量存储于寄存器中,只是请求寄存器变量,不一定能请求成功。

如果一个变量被register来修辞,就意味着,该变量会作为一个寄存器变量,让该变量的访问速度达到最快。

使用register关键字时,注意:其只能修饰局部变量,不能修饰全局变量,不能修饰函数。register变量必须是CPU寄存器可以接受的值,这通常意味着register变量必须是一个单个的值,并且长度应该小于或者等于整型的长度,且不能用取地址符号&对其求取地址。


给出如下代码:

#include <stdio.h>

void f1()
{
	int i = 0;
	
	i++;
	printf("%d\n",i);
} 
void f2()
{
	static int i = 0;
	i++;
	printf("%d\n",i);
} 

int main()
{
	int j;
	
    for(j = 0; j < 5; j++)
    {
		f1();	
	}
    for(j = 0; j < 5; j++)
    {
		f2();	
	}
	
    return 0;
}
得到结果为:
1

1

1

1

1

1

2

3

4

5

从而说明static关键字修饰的局部变量只会被初始化一次。虽然其作用域仅限于所在函数内部,但是其在整个程序的运行期一直存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值