变量的存储类型

11 篇文章 0 订阅

变量一共有4种存储类型分别为:
1.自动变量(auto)。
2.静态变量 (static)。
3.外部变量(extern)。
4.寄存器变量(register)。

一、自动变量(auto):
函数中所有的非静态局部变量。

#include <iostream>
#include <stdlib.h>
#include <Windows.h>

void exercise(){
	//自动变量
	int i = 0;
	printf("i=%d\n",i);
	{
		//自动变量
		int c = 0;
		printf("c=%d\n",c);
	}

	//c语言方式可以加上
	//auto int p = 0;
}

int main(void){
	//自动变量
	int j = 0;

	//c++方式会自动判别该数据为什么类型
	auto d = 0;
	exercise();

	printf("j=%d d=%d\n",j,d);

	system("pause");
	return 0;
}

二、寄存器变量(register):
(不属于内存,不可以取地址)。
一般经常被使用的变量(例如一个变量需要计算几千次)可以设置成寄存器变量,register变量会被存储在寄存器中,计算速度远快于存在内存中的非register变量。
打印寄存器变量地址会被降级处理。(转换成自动变量)
不能定义为全局变量。

#include <iostream>
#include <stdlib.h>
#include <Windows.h>

void exercise(){
	register int i = 0;
	printf("i=%d\n",i);
	//打印地址的时候会发现可以打印,这是因为在C++里(被优化)会自动
	//把寄存器变量(register)i自动降级成为自动变量(auto)i。
	printf("i=0x%p\n",&i);
}

int main(void){

	exercise();

	system("pause");
	return 0;
}

三、静态变量 (static):
1.只会被定义一次
2.全局存在
3.局部静态变量只能在该函数内部调用,但全局存在。
4.全局静态变量,在它之下的代码区都可以访问,并全局存在。

#include <iostream>
#include <stdlib.h>
#include <Windows.h>

//全局静态变量
static int i = 0;

void exercise(){
	i = 15;
	printf("i = %d\n",i);

	//局部静态变量
	static int j = 12;
	printf("j = %d\n",j);
}

int main(void){

	exercise();

	system("pause");
	return 0;
}

四、外部变量(extern):
全局变量在其他源文件中声明成extern变量,可以扩展该全局变量的作用域至声明的那个文件,其本质作用就是对全局变量作用域的扩展。

#include <stdio.h>

int extern_value = 888;

另一个cpp文件中:

#include <iostream>
#include <Windows.h>

extern int extern_value;

int main(void){

	printf("extern_value = %d\n",extern_value);

	system("pause");
	return 0;
}

生命周期和作用域:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值