C语言存储类、链接(十八)--extern、static、register修饰符


extern

声明外部属性和全局变量时使用,一般外部文件可使用的函数和变量都是extern的,没有进行初始化

int yy = 10;

int main(int argc, const char * argv[])
{
    extern int yy; //10
    printf("%d",yy); //10

cout << &yy << endl; //0x100001068
    
    
    int yy; //重新初始化一个新的tt变量,和全局内存地址不一样
    cout << &yy << endl; //0x7fff5fbff5e4


static bb;

一般用于对私有变量的声明,还有局部变量全局性的声明,只进行一次初始化分配内存空间,之后使用直接赋值
    static int zz = 10;
static声明的变量,默认值是0,而不是随机值
对函数参量不能使用 static
int pp(static int c);



register

register变量必须是能被CPU所接受的类型。这通常意味着register变量必须是一个单个的值,并且长度应该小于或者等于整型的长度不过,有些机器的寄存器也能存放浮点数。

  其次,因为register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址

实际上,许多编译程序都会忽略register修饰符,因为尽管它完全合法,但 它仅仅是暗示而不是命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值