C++中auto,static,register,extern四种变量简单理解

静态存储变量:一般是在定义时就分配了固定的存储空间并一直保持不变,直到整个程序结束为止.

动态存储变量:一般是在程序执行过程中使用到该变量时才会为该变量进行存储空间的分配操作,在调用函数完毕之后,此类变量的存储空间将会立即进行释放.

auto变量:

#include<iostream>
#include<stdlib.h>
using namespace std;
//auto类型的变量是C++当中默认的存储类型变量,一般情况未加存储类型说明的变量均为auto类型的变量 
//2:自动变量(auto)属于动态存储方式,分配在栈内存当中 
int main()
{
	auto int x,s;
	int y;//默认存储类型为auto
	cout<<"please input two number:"<<endl; 
	cin>>x>>y;
	s=x+y;
	if(x!=0&&y!=0)
	{
		auto int s;//此处的s和if语句外边的s不是同一个s,当前s为一个局部变量 
		s=x-y;
		cout<<"x-y="<<s<<endl;
	} 
	cout<<"x+y="<<s<<endl;
 } 
static变量:

1:static可以将变量声明为静态变量,静态变量在定义时开辟空间,在程序结束时释放空间,在整个程序运行期间都不进行资源的释放

#include<iostream>
using namespace std;
int add(int x)
{
	static int n=0;//将变量n定义为static静态变量时,该内存当中的值只有在程序完全运行完毕时才会进行释放,在整个程序的运行期间一直对变量进行保存 
	n=n+x;
	return n;
}
int main()
{
	int i,j,sum;
	cout<<"input the number:"<<endl;
	cin>>i;
	cout<<"the result is:"<<endl;
	for(j=1;j<=i;j++)
	{
		sum=add(j);
		cout<<j<<":"<<sum<<endl;
	}
}
//n在整个程序的运行过程中:n被static修饰过所以每一次执行的结果都会被保存 
//n=0+1
//n=1+2
//n=3+3 
//当n去掉修饰符static时,将变为auto类型时,只有在add方法被调用时才开辟空间,在调用完该方法时将会对开辟的空间进行释放
//n=0+1
//n=0+2
//n=0+3 
register变量:

当一个变量被register进行修饰之后,则改变将被存放到CPU的寄存器当中,使得CPU直接到寄存器当中进行变量的访问即可而不需要进行主存的访问,可以提高程序运行的

效率,被register修饰的变量一般为在程序当中被频繁性的进行访问的一些变量




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值