c++ 变量的存储类别

  1. c++的存储类别
  2. 首先我们得知道c++的变量存储方式:静态存储和动态存储两种,全局变量使用的是静态存储,函数的形参和局部变量是使用的动态存储。
  3. 当然在有的教程中又分为自动存储,静态存储,动态存储。相信所有朋友都知道内存四区的概念,这个所说的静态存储就是存储在我们所说的数据区中,自动存储就是说存储在栈中的变量,而动态存储就是说在堆区的变量。
  4. 而第二行的叫法就是把自动存储并入了动态存储(当然真正的程序的运行时的内存机制远远不是这么简单,得去学习操作系统,内核编程等很多知识才能搞清楚,在这里就不叙述了,主要是不会,半桶水,嘿嘿)
  5. 下面我们来看下函数中可以声明或者定义的4中类型的变量auto,static,register,extern

auto举个例子

 1 #include<iostream>
 2 using namespace std;
 3 int sum()
 4 {
 5     auto int x=0;          //相当于int x=0;我们平时使用的时候auto是默认,可以不写
 6     return x;
 7 }
 8 int main()
 9 {
10       int x=sum();          //这里相当于auto int x=sum();  auto可以写也而已不写
11       system("pause");
12       return 0; 
13 }

7.是不是复制粘贴进你的vs有错误,(类型说明符的组合无效),嘿嘿,当然有错了,这是因为auto的语意发生了改变,新版的c++auto的意思是自动类型推倒,如果你非得让上面的例子成功的话,那么可以去百度,应该怎么设置vs。

static用这个关键字声明的变量是在静态区,

#include<iostream>
using namespace std;
int sum(int x)
{
    static int y = 0;//y会一直保存在程序中,是静态存储,并且只会进行一次初始化
    y = y + x;
    return y;
}
int main()
{
    cout << sum(10) << endl;
        cout << sum(10) << endl;
    system("pause");
    return 0;
}

8.register用这个关键字声明的变量,是存储在寄存器中,访问速度非常快,因此一般用于循环时候要多次用到的变量,由于电脑中寄存器并不多,因此register声明的变量个数不能多

代码就不写了,同上

#include<iostream>
using namespace std;
int sum()
{
    register int y = 0;//寄存器变量
   while(y<1000)
           y++;
    return y;
}
int main()
{
    cout << sum() << endl;
        cout << sum() << endl;
    system("pause");
    return 0;
}

9.extern 声明的变量是外部变量,什么意思呢,比如a.cpp中有个变量int c=0;在b.cpp中想用它怎么办呢,extern int c;就ok了,当然a.cpp和b.cpp得是同一个项目

猜你喜欢

转载自www.cnblogs.com/kangmingli/p/8930325.html