c语言中的extern_C/C++语言中的变量的4种存储类型

所有的数据都有两种类型

(1)数据类型: : 如 int,float 等。

(2)存储类型: : 总共有四种存储类型的变量,分别为自动变量(auto)、静态变量(static)、外部变量(extern)以及寄存器变量(register)。

1、o auto - - 函数中所有的非静态局部变量。

2、 register - - 一般经常被使用的的变量(如某一变量需要计算几千次)可以设置成寄存器变量register 变量会被存储在寄存器中,计算速度远快于存在内存中的非 register 变量。

3、 static - - 在变量前加上 static 关键字的变量。

4、 extern - - 把全局变量在其他源文件中声明成 extern 变量,可以扩展该全局变量的作用域至声明的那个文件,其本质作用就是对全局变量作用域的扩展。

主cpp源文件(命名main)如下:

include <stdio.h>

#include <iostream>

#include <stdlib.h>

#include <Windows.h>

using namespace std;

extern int extern_value;

static int zeng_yong= 24; //全局静态变量

//int zeng_yong= 30;

//寄存器变量

void register_demo() {

register int j = 0;

printf("j:%dn", j);

for (register int i = 0; i < 1000; i++) {

//. . . . . .

}

printf("&j:0x%pn", &j); //C++ 的register 关键字已经优化,如果我们打印它的地址,它就变成了普通的auto变量。

{

int k = 100;

k += j;

}

printf("register_demo - register_demo:%dn", zeng_yong);

}

//局部静态变量

void static_demo() {

static int girl = 18;

int yahuan = 17;

++girl;

++yahuan;

printf("girl:%d yahuan:%dn", girl, yahuan);

printf("register_demo - register_demo:%dn", zeng_yong);

}

//外部变量

void extern_demo() {

extern_value++;

printf("extern_value:%dn", extern_value);

}

int main(void) {

int i = 0; //C语言的auto不会报错,C++ auto 已经升级啦

//register_demo();

//static_demo();

//static_demo();

//static_demo();

extern_demo();

system("pause");

return 0;

}

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

次cpp源文件(命名extern_demo)(必须添加否则会报错)如下:

#include <stdio.h>

int extern_value = 8888;

123

变量的作用域和生存周期

493a06f27b6eef84ed0689cbf2db30f3.png

注:“快”表示在定义函数里的范围

想要学习更多C/C++技术知识与分享,记得点击收藏与关注哦

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值