Chinaunix首页 | 论坛 | 博客
  • 博客访问: 446662
  • 博文数量: 191
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 172
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-31 14:35
个人简介

没有时间把一件事情做好,却有时间把一件事情反复做!

文章分类

全部博文(191)

文章存档

2016年(2)

2015年(74)

2014年(111)

2013年(4)

我的朋友

分类: C/C++

2014-03-25 14:09:44

声明:本系列随笔主要用于记录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.代码示例分析

#include  int main()
{ auto int i = 0; register int j = 0; static int k = 0; return 0;
}
#include  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寄存器中,不在内存中,没有地址故不能用&;主要用于实时系统中,使用在运行速度要求很高的系统 。  

阅读(337) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~