关键字 static 和关键字 register

关键字 static 

静态的

修饰变量和函数

1.修饰局部变量

2.修饰全局变量

3.修饰函数

void test(){

//void的意思就是不需要这个函数有任何返回值,只需要执行就行,主要看这个函数的值需不需要调用

int a=1;

a++;

printf("%d",a);

}

int i=0;

   while(i<10){

   test();

    i++;

    printf("%d",a);

   }

上述函数输出了10个2

此时在int a=1;前面加一个static修饰一下a这个变量

static int a=1;

得到了  2 3 4 5 6 7 8 9 10 11

a出了text范围之后没有销毁

static 修饰局部变量的时候,局部变量不销毁。本质上,static改变了变量的存储位置

内存里划分出不同的区块

栈区  

存储局部变量  进栈区创建,出栈区销毁  static使一个变量变为了静态区  影响了变量的生命周期

堆区

静态区

随程序的结束而结束

static修饰全局变量

不同的源文件之间使用同一个变量时要声明外部符号 extern

extern int a;

当我们在全局变量定义前加static

static int a=0;

发现在其他文件无法使用了

因为全局变量是拥有外部链接属性的,一个文件要经过编译加链接生成可执行程序,现在加上static,是因为static修饰全局变量时,其外部链接属性就变为了内部链接属性,其他的源文件就无法使用了,但内部可以看见,相当于关闭了他的外部连接属性,外部无法使用,作用域变小了,是一个保护系统。

作用

1.保护作用

2.防止命名冲突

static 修饰函数

int Add(int x,int y);{

return x+y:

)

int main(){

int a=10;

int b=20;

int z=Add(a,b);

printf("%d",z);

}

如果将Add这个函数放在其他的源文件,

extern int Add(int x,int y);

依然可以使用Add,所以说函数也是具有外部连接属性的

这时使用static,可以使Add的外部链接属性消失,也是起到了保护作用,跟全局变量的修饰相似

关键字 register

电脑上的存储设备

寄存器(集成到CPU上)

高速缓存

内存

硬盘

(越靠上,越快,空间越小,造价越大,越靠下面的空间大,访问速度慢,造价低)

CPU承担了计算任务,随着技术进步,计算能力非常快,造价越来越高,所以创造了寄存器,以此类推,这样整个计算器的计算性能就高起来了。在我们写法代码的过程中,也可以创建寄存器,可以建议数据储存到寄存器中更快的使用

register int num=3;

大量频繁使用的变量放进寄存器中,但最终放不放进寄存器中,由编译器决定,由于现在的处理器非常聪明,有些数据即使不声明放入寄存器中,使用的太过频繁,他会自己放进寄存器中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值