目录
static静态变量
1.static静态变量存在静态存储区,不会被重复初始化
#include<stdio.h>
int main()
{
void fun();
for (int i = 0; i < 3; i++)
fun();
return 0;
}
void fun()
{
int i = 0;
static int static_i = 0;
printf("i=%d\n", i);
printf("static_i=%d\n", static_i);
i++;
static_i++;
}
结果
2.static内置静态变量也是存在静态存储区,不会被重复初始化
#include <stdio.h>
int main()
{
int i, num;
num = 2;
for (i = 0; i < 3; i++)
{
printf("num 变量为 %d \n", num);
num++;
{
static int num = 1;
printf("内置模块 num 变量为 %d\n", num);
num++;
}
}
return 0;
}
结果
auto定义变量
auto内置变量每次运行都会被初始化,内部变量名与外部局部变量名不冲突
#include <stdio.h>
int main()
{
int i, num;
num = 2;
for (i = 0; i < 3; i++)
{
printf("num 变量为 %d \n", num);
num++;
{
auto int num = 1;
printf("内置模块 num 变量为 %d \n", num);
num++;
}
}
return 0;
}
结果
register寄存变量
寄存器的数量是有限的,通常是把使用最频繁的变量定义为 register 变量,提高效率
不用每次使用都从内存中提取,存放在CPU的寄存器中
#include <stdio.h>
int main()
{
register int i;
int tmp = 0;
for (i = 1; i <= 100; i++)
tmp += i;
printf("总和为 %d\n", tmp);
return 0;
}
结果