C语言基础知识整理(二)

来源:互联网 发布:人体辉光 知乎 编辑:程序博客网 时间:2024/05/17 02:24

1 const有哪些作用

   a.定义const常量,具有不可变性。如:

     const int MAX = 100;

   b.进行类型安全检查,使编译器对处理的内容有更多的了解

   c.避免意义模糊的数字出现,同样可以很方便地进行参数调整和修改。

   d.保护被修饰的函数入参,防止被意外地修改,增加程序的健壮性。

   e.提高了程序的效率。编译器通常不为普通const常量分配存储空间,而是将他们保存在符号表中,这将使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率很高。


关于符号表的知识详见

http://www.cnblogs.com/tanhehe/p/3570033.html


2 const修饰指针的几种情况

    a. const int * A ;  //指针常量,const修饰指向的对象,A可变,但A指向的对象不能变

    b. int const * A;  //指针常量,const修饰指向的对象,A可变,但A指向的对象不能变

    c. int * const A; //常量指针,const修饰指针A,A不可变,A指向的对象可变


3 volatile关键字的作用

     在多线程编程时,有时在线程A中,当要读取某个变量时,编译器为了加快访问速度,有时会将该变量放在寄存器中,当下次用的时候直接从寄存器中取,但是这时可能线程B已经将这个变量的值改变了,但是寄存器中的值不能进行相应更新,导致程序读取的值和实际的变量值不一致。

     volatile是一个类型修饰符,它用来修饰被不同线程访问和修改的变量,被volatile修饰的变量,编译器不会对它进行优化,系统每次用到它的时候都是直接从对应的内存中提取,而不会利用cache中的原有数值。

     volatile一般用于修饰多线程间被多个任务共享的变量和并行设备硬件寄存器等。


4 sizeof是数据类型的关键字,而非函数


0 0
原创粉丝点击