C语言查漏补缺

define和typedef使用时:

#define int* int_p int_p a,b 定义变量时 只有a的类型是int*
typedef int* int_t int_t a,b 定义变量时 a和b都是int*类型

声明对应的编译器,有两个含义:

1.告诉编译器,这个声明的名字已经匹配到同一内存上了
2.告诉编译器,声明的名字已经被占用了,别的地方不能再出现
定义和声明最重要的区别就是,定义开辟了内存,声明还没有开辟内存

extern 外部定义关键字,如果我们想使用一个变量,但是这个变量声明在下面,或者别的文件里声明或定义了,那么用extern就能可以拿来使用这个变量

修饰const类型变量时,也必须在源文件声明里加上extern才行,比如:extern const int a
在这里插入图片描述

static关键字

在C语言中修饰变量和函数,但在C++中修饰的有其他用法
修饰全局变量时,说明该变量只能在此程序中使用,本文件使用(作用域受限,生存期不变)
修饰局部变量时,说明该变量只能在第一次调用函数的时候初始化,再次调用该变量保存的是上一次调用后的值 (作用域不变,生存期受限)
修饰函数时,说明该函数只能在此程序中使用,本文件使用(作用域受限,生存期不变)
static修饰的变量放在.data区里,整个main函数结束,才消失,它会默认初始化0,在C语言中必须拿常量进行静态变量初始化(C++可以那变量初始化)
在这里插入图片描述

const 修饰的变量不可改,恒定不变,只能读不能写

无论修饰的是全局变量还是局部变量修饰的时候都必须初始化赋值
在这里插入图片描述

register寄存器关键字

register建议编译器尽可能将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率,如果一个变量被register修饰,意味着该变量作为寄存器变量,让该变量的访问速度达到最快 如果把数据存放在主存储器中运行的就会慢,如果放入寄存器在通过CPU运行就会变得快
限制:1.register修饰变量必须是能被CPU所结束,必须是单个值,并且长度小于等于int长度
2.register可能不存放内存中,所以不能用取地址符&来获取变量地址
3.只有局部变量和形参可以作为寄存器变量
4.局部静态变量不能定义寄存器变量(生存期太长一直占着寄存器)
5.由于寄存器数量有限,不能定义任意多个寄存器变量

CPU寄存器

32位操作系统只能存32个4字节
eax ebx ecx edx

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值