所有的数据都有两种类型
(1)数据类型: : 如 int,float 等。
(2)存储类型: : 总共有四种存储类型的变量,分别为自动变量(auto)、静态变量(static)、外部变量(extern)以及寄存器变量(register)。
1、o auto - - 函数中所有的非静态局部变量。
2、 register - - 一般经常被使用的的变量(如某一变量需要计算几千次)可以设置成寄存器变量register 变量会被存储在寄存器中,计算速度远快于存在内存中的非 register 变量。
3、 static - - 在变量前加上 static 关键字的变量。
4、 extern - - 把全局变量在其他源文件中声明成 extern 变量,可以扩展该全局变量的作用域至声明的那个文件,其本质作用就是对全局变量作用域的扩展。
主cpp源文件(命名main)如下:
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
using namespace std;
extern int extern_value;
static int zeng_yong= 24; //全局静态变量
//int zeng_yong= 30;
//寄存器变量
void register_demo() {
register int j = 0;
printf("j:%d\n", j);
for (register int i = 0; i < 1000; i++) {
//. . . . . .
}
printf("&j:0x%p\n", &j); //C++ 的register 关键字已经优化,如果我们打印它的地址,它就变成了普通的auto变量。
{
int k = 100;
k += j;
}
printf("register_demo - register_demo:%d\n", zeng_yong);
}
//局部静态变量
void static_demo() {
static int girl = 18;
int yahuan = 17;
++girl;
++yahuan;
printf("girl:%d yahuan:%d\n", girl, yahuan);
printf("register_demo - register_demo:%d\n", zeng_yong);
}
//外部变量
void extern_demo() {
extern_value++;
printf("extern_value:%d\n", extern_value);
}
int main(void) {
int i = 0; //C语言的auto不会报错,C++ auto 已经升级啦
//register_demo();
//static_demo();
//static_demo();
//static_demo();
extern_demo();
system("pause");
return 0;
}
次cpp源文件(命名extern_demo)(必须添加否则会报错)如下:
#include <stdio.h>
int extern_value = 8888;
变量的作用域和生存周期
注:“快”表示在定义函数里的范围。