欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c++ 变量的存储类别

程序员文章站 2022-10-06 23:45:06
auto举个例子 7.是不是复制粘贴进你的vs有错误,(类型说明符的组合无效),嘿嘿,当然有错了,这是因为auto的语意发生了改变,新版的c++auto的意思是自动类型推倒,如果你非得让上面的例子成功的话,那么可以去百度,应该怎么设置vs。 static用这个关键字声明的变量是在静态区, 8.reg ......
  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得是同一个项目