C语言 关键字!!面试常碰到!
2016-07-25 18:43
387 查看
关键字
register 寄存器变量1 作用:请求编译器尽可能(资源有限喃!)将变量保存在CPU的内部寄存器中。
2 目的:为了节省CPU从内存中读取数据的时间,从而提高了程序的运行效率。
3 什么时候使用?频繁被访问的变量。
4 注意事项:
1 register只能修饰局部变量不能修饰全局变量
(因为全局变量可以被多个进程访问,如果设为register变量,只有当前进程知道变量的位置);
2 不能用 &(取地址) 来获得register变量的地址
(& 获得的地址时内存的地址);
3 register修饰的变量类型一定要是CPU所能接受的类型。
static 静态
可以修饰局部变量,全局变量,函数
1 作用:
1 修饰局部变量,静态局部变量,延长了局部变量的生命周期,使得该变量在整个程序运行结束后再释放;
2 修饰全局变量,静态全局变量,只能在本文件中访问,不能再其他文件中访问;
3 修饰函数,称为静态函数,只能在本文件中调用,不能再其他文件中调用;
另外,静态变量存储在虚拟地址空间的data 段,没有初始化时,系统默认初始化为零。
什么时候用?
1 局部:想要局部变量不想在函数结束后被释放,在程序结束后才被释放
(为什么不用全局变量?我们程序中尽可能少使用全局变量,全局变量危险,对所有人可见);
2 全局和函数:1想让全局变量只能在本文件中可访问(做保护),2 其他文件可以重定义变量名;
const 只读变量
这个空间是可变的,但不能通过const修饰的变量名来修改对应空间的值;
注意事项:1 使用num修饰变量,一定要进行初始化;
常常用const修饰函数形参,可以避免在函数实现过程中修改实参的值。
const的修饰准则:近水楼台先得月,离谁近,就是修饰的谁!
例:
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-size:18px;"> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">const</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> num = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//const 修饰 num,不可以num++;但可以通过其他方式改变 num对应空间里的值;</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">const</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> * p = #<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//const 离*p更近,不能通过*p修改num对应空间的值(*p)++;</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">const</span> * p = #<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//const 离*p更近,不能通过*p修改num对应空间的值(*p)++;</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> * <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">const</span> p = #<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//const 离p更近,不能通过p修改num对应空间的值p++;</span> </span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-size:18px;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-size:18px;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-size:18px;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-size:18px;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-size:18px;">5</span></li></ul>
extern 外部声明
在当前文件中要使用其他文件中定义的全局变量或者函数,就要再当前文件中声明要使用的变量或者函数。
注意:exter int count 要加变量名
typedef 给数据类型重命名
作用:1提高了代码的移植性
2 方便定义变量(将复杂的数据类型名变为简答的名字)
3 对变量起到了注释的作用。
一个在努力中的未来程序员,如果有更好的想法,欢迎评论
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- C# partial关键字说明
- Lua和C语言的交互详解
- asp下查询xml的实现代码
- SQL语句的各个关键字的解析过程详细总结
- C# 的关键字详细介绍
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- C# 参考之访问关键字:base、this
- .net(c#)中的new关键字详细介绍
- C#基础语法:Base关键字学习笔记
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C++中explict关键字用法
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解