C语言关键字:auto、static、register、const
程序是由一个一个的语句组成的,下面本站小编就为大家总结一下C语言关键字:auto、static、register、const、volatile 、extern ,希望对您有所帮助!
auto
这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。
register
这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。
static
常见的两种用途:
1>统计函数被调用的次数;
2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型。在一些含有较多的变量并且被经常调用的函数中,可以将一些数组声明为static类型,以减少建立或者初始化这些变量的开销.
详细说明:
1>、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
2>、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。
3>当static用来修饰全局变量时,它就改变了全局变量的作用域,使其不能被别的程序extern,限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。
使用注意:
1>若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
2>若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
3>设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题(只要输入数据相同就应产生相同的输出)。
const
被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。它可以修饰函数的参数、返回值,甚至函数的定义体。
作用:
1>修饰输入参数
a.对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const引用传递”,目的'是提高效率。例如将void Func(A a) 改为void Func(const A &a)。
b.对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。例如void Func(int x) 不应该改为void Func(const int &x)。
2>用const修饰函数的返回值
a.如果给以“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const修饰的同类型指针。
如对于: const char * GetString(void);
如下语句将出现编译错误:
char *str = GetString();//cannot convert from 'const char *' to 'char *';
正确的用法是:
const char *str = GetString();
b.如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const修饰没有任何价值。 如不要把函数int GetInt(void) 写成const int GetInt(void)。
-
C语言中递归函数的教学方法
导语:函数递归基于分治法思想,将复杂的大规模问题转化为小规模问题进行求解,在算法设计中具有重要的理论意义和实用价值,是C语言教学的难点。下面就由小编为大家介绍一下C语言中递归函数的教学方法,欢迎大家阅读!1.引言C语言是一种语法简洁紧凑、运算符丰富、可移植...
-
2017年计算机C语言考试编程练习题及答案
江山代有才人出,各领风骚数百年。以下是小编为大家搜索整理的`2017年计算机C语言考试编程练习题及答案,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!1.从键盘上输入8个浮点数,编程求出其和以及平均值。要求写出求和以及平均值的函数。答:编...
-
c#实现sunday算法实例
Sunday算法思想跟BM算法很相似,在匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符,下面小编为大家整理了c#实现sunday算法实例,希望能帮到大家!因正则表达式搜索总是出现死循环,开始考虑改为其他搜索方式,因为自带的IndexOf默认只能找到第一个或最后一...
-
C语言入门知识:常量
导语:在程序运行中,其值不能被改变的量称为常量。下面是常量相关知识,欢迎阅读:常量有5种类型:整型常量、实型常量、字符常量、字符串常量和符号常量。(一)数值转换数字的四种表现形式:①:二进制:所有数字由0,1构成,逢二进一,二进制数中不会出现2.。例:110101②:八进制:以数...
相关文章
- Unit 5 It must belong to Caral section A英语评课稿
- A Letter to Univsity Pesident about the Canteen Service on C
- 英语阅读:VIT declines to acquire Ang Mo Kio property
- 托福英语写作范文:Examinations exert a pernicious influence on educat
- 英语美文阅读:Kerry: Anti-IS Coalition Could Contribute to B
- DOS的Interlnk、Intersvr、Qbasic命令使用说明
- 英语满分作文:Reading-TheBestMeanstoAcquireknowledge
- 四级作文:Create a Conservation-Oriented Campus
- Book5-Unit1Greatssientists的重点单词、词组整理
- Protecting water resources英语作文