您的位置:首页 > 编程语言 > C语言/C++

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语言 关键字 面试