对关键字的理解和使用

1. register

作用:请求编译器尽可能的将变量保存在CPU内部寄存器中。

用法:用于经常被访问的变量,可以节省CPU访问变量的时间。eg. 循环变量

注意事项:

  a. register只能修饰局部变量,不能修饰全局变量。因为一旦用register修饰,其它进程就不知道它的位置。

  b.不能用取地址符&去获取register修饰的变量。因为变量不一定保存在寄存器中,资源是有限的。

  c.register修饰的变量类型一定是CPU接收的数据类型。

2. static

作用:起到延长生命周期和保护的作用。

用法:

  a. static修饰局部变量,延长变量的生命周期,在程序结束后释放。

  b. static修饰全局变量,保护变量,只能在本文件可见,在其它文件不可见。

  c. static修饰函数,保护函数,只能在本文件调用,不能在其它文件调用。

注意事项:

  a. static修饰的变量保存在静态数据区,默认初始化值为0。

  b. 尽可能的要少使用全局变量。因为全局变量对所有可见,容易被修改。

3. const

作用:可以保护所修饰的变量的值不被“修改”。

用法:const + 变量 (离谁近,谁就不能被修改)

注意事项:

  a. const修饰变量,要先进行初始化。eg. const int a = 5;

  b. const修饰变量,不能通过变量名来修改,但是可以通过地址来修改值。

#include <stdio.h>

int main()
{
    const int a = 5;

    printf("a = %d\n", a);
    
    int *p = &a;

    *p = 6;

    printf("a2 = %d\n", a);

    return 0;
}

[root@localhost 0725]# ./a.out 
a = 5
a2 = 6
4. typedef

作用:对已有的类型声明一个新名字。

用法:可以提供代码的移植性,方便定义变量以及解释作用。

5. extern

作用:表示变量或者函数的定义在别的文件中。

用法:在一个c文件中访问另一个c文件中的变量。

注意事项:extern仅仅是一个变量的声明,其并不是在定义变量,并未为变量分配实际的内存空间。
6. volatile

作用:用来修饰被不同线程访问和修改的变量,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。

用法:

  a.中断服务程序中修改的供其它程序检测的变量要加volatile。
  b.多任务环境下各任务间共享的标志要加volatile。
  c.存储器映射的硬件寄存器通常要加volatile。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值