课程2——变量修饰关键字

时间:2022-05-17 23:34:08

声明:本系列随笔主要用于记录c语言的常备知识点,不能保证所有知识正确性,欢迎大家阅读、学习、批评、指正!!你们的鼓励是我前进的动力。严禁用于私人目的。转载请注明出处:http://www.cnblogs.com/myblesh/

1.关键字概述:

C语言中的变量可以有自己的属性。

  在定义变量的时候可以加上属性关键字。

“属性”关键字指明变量的特有意义 。

  下面分析常用的auto、register、static三个常用关键字。

2.auto

   auto即C语言中局部变量的默认属性

   编译器默认所有的局部变量都是auto的

  auto修饰的变量在栈空间分布。

3.static

   指明变量的静态属性;

   同时具有“作用域限定符”的作用;

  static修饰的变量存储在静态数据区;

4.register

   将变量存储于寄存器中;register只是请求寄存器变量,不一定每次都能请求成功;

  Note:(1)register的变量必须是cpu可接受的变量值;(2)不能用&取地址符作用域于register修饰的变量

5.代码示例分析

课程2——变量修饰关键字课程2——变量修饰关键字
#include <stdio.h>

int main()
{
auto int i = 0;
register int j = 0;
static int k = 0; return 0;
}
课程2——变量修饰关键字课程2——变量修饰关键字
#include <stdio.h>

void func1()
{
int i = 0;//在栈空间上分布,每次调用完释放
i++;
printf("%d\n",i);
} void func2()
{
static int i = 0;//在静态数据区分配空间;等价于变量i只被初始化一次
i++;
printf("%d\n",i);
} int main()
{
for(int i = 0;i<10;i++)
{
func1();
}
for(int i = 0;i<10;i++)
{
func2();
}
return 0;
}

6.小结

      auto变量存储在程序的栈中,默认属性;

      static变量存储在程序静态区; static修饰的全局变量作用域只是声明的文件中;static修饰的函数作用域只是声明的文件中

      register变量请求存储于cpu寄存器中,不在内存中,没有地址故不能用&;主要用于实时系统中,使用在运行速度要求很高的系统 。