当前位置: 代码迷 >> 综合 >> C++中auto,static,register,extern四种变量简单理解
  详细解决方案

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

热度:68   发布时间:2023-10-24 04:25:13.0

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

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

auto变量:

#include<iostream>
#include<stdlib.h>
using namespace std;
//auto类型的变量是C++当中默认的存储类型变量,一般情况未加存储类型说明的变量均为auto类型的变量 
//2:自动变量(auto)属于动态存储方式,分配在栈内存当中 
int main()
{auto int x,s;int y;//默认存储类型为autocout<<"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修饰的变量一般为在程序当中被频繁性的进行访问的一些变量




  相关解决方案