设为首页 加入收藏

TOP

C语言关键字详解(二)
2015-08-31 21:25:10 来源: 作者: 【 】 浏览:67
Tags:语言 关键字 详解
100;
? ? //p4 = p3;//error(5)
?
? ? ? ? return 0;
}?


复制代码


  在上面代码中,error(1)和error(2)很容易理解,因为const在*之后,所以指针p3,p4本身为只读,在定义时必须初始化。error(3)是因为对于p1指针,const在*之前,所以p1所指向的对象不能改变。error(4)和error(5)是因为对于p3,p4,有const在*之后,所以指针本身只读,在初始化之后,就无法再改变了。


  (30)sizeof:计算数据类型长度


  很多人不理解sizeof与strlen的区别:sizeof是运算符,而strlen是函数;sizeof计算的是数据类型的大小,而strlen计算的是字符串的长度;sizeof的参数既可以是数据类型,也可以是变量,而strlen的参数只能是char*,而且必须是空字符结尾;sizeof返回值类型为unsigned,而strlen返回值为signed,因为它需要返回负数来表示出错情况。


  (31)typedef:用以给数据类型取别名


  typedef在程序设计里面很有用,当一个数据类型很长时(比如说函数指针),我们就可以用typedef来选用一个很合适的名字来替代它;当我们使用int,float,double这些类型时,也可以使用自己喜欢并且直观的名字来重新定义它,这样,当我们以后需要把项目中的float类型换成double类型的时候,我们就可以直接在typedef上把float换成double就可以,而不需要把所有代码里面每个float换成double。
  (32)volatile:说明变量在程序执行中可被隐含地改变


  volatile 修饰的变量不允许编译器对与它有关的运算做任何优化;用volatile定义的变量可能会在程序外被改变,所以每次都必须从内存中读取,而不能把他放在cache或寄存器中重复使用。一般用在以下几个地方:


  a、并行设备的硬件寄存器(如:状态寄存器)
  b、一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
  c、多线程应用中被几个任务共享的变量


以上结论只是个人的见解与建议,如果上述所说有误或者大家有不同的见解,欢迎指正与讨论。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java 9新功能之HTTP2和REPL 下一篇使用值类型构建更好的Swift应用程..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: