所有的数据都有两种类型 数据类型: 如 int,float 等 存储类型: 总共有四种存储类型的变量,分别为自动变量(auto)、静态变量(static)、外部变量(extern)以及寄存器变量(register)。 (1)auto - 函数中所有的非静态局部变量。 (2)register - 一般经常被使用的的变量(如某一变量需要计算几千次)可以设置成寄存器变量,register 变量会被存储在寄存器中,计算速度远快于存在内存中的非 register 变量。 (3)static - 在变量前加上 static 关键字的变量。 (4)extern - 把全局变量在其他源文件中声明成 extern 变量,可以扩展该全局变量的作用域至声明的那个文件,其本质作用就是对全局变量作用域的扩展。
#include <stdlib.h> #include <iostream> using namespace std; extern int extern_value; static int yahuan_xiaoli = 24;//全局静态变量 //int yahuan_extern = 30; //寄存器变量 void register_demo() { register int j = 0; printf("j: %d\n", j); //C++ 的 register 关键字已经优化,如果我们打印它的地址,它就变成了 //普通的 auto 变量 for (register int i = 0; i < 1000; i++) { //.... } printf("&j : 0x%p\n", &j); { int k = 100; k += j; } printf("register_demo - register_demo: %d\n", yahuan_xiaoli); } //局部静态变量 void static_demo() { static int girl = 18; int yahuan = 17; ++girl; ++yahuan; printf("girl: %d yahuan: %d\n", girl, yahuan); printf("static_demo - register_demo: %d\n", yahuan_xiaoli); } //外部变量 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; }标签:存储,变量,int,demo,register,C++,static,extern,四种 From: https://www.cnblogs.com/smartlearn/p/16794947.html