当前位置: 首页 > C, C/C++ > 正文

C语言杂记1

                                                                                                               C语言杂记

       注意signed int 与 unsigned int 之间的比较,与运算因为当int 型变量为-1时很可能被升级成无符号整型,就导致取反+1这种运算的产生,出现无法控制的很大的数。

      malloc(strlen(str))绝对错误地语句,考虑字符串需要+1.

      NULL 与NUL的区别:

               NUL:用于结束一个字符串。

               NULL:表示什么也不做(空指针)。

     在switch语句中defaut关键字可以放在任意位置,编译器不检查,可能导致无意的跳过case.

     注意变量的作用域如果过宽会对库函数造成影响。其中有一个all — or — nothing 原则,一个符号要么全局可见,要么对其他文件都不可见。

     C语言似乎比其他语言更接近标记歧义性的曲折边缘。

    结合性:

              只用于表达式中出现两个以上相同优先级的操作符的情况,用于消除歧义。

   gets()函数导致蠕虫病毒,并且现在的BUG还没有清除。

   sizeof的操作数最好加上括号,不然容易引起歧义如(sizeof*p)

    C语言 还有最大一口策略,如果下一种标记有超过一组的解释方案,编译器将自动选取能组成最长字符序列的方案。

   注意const 的用法

   指针的声明方法

   结构体的内存对齐问题

   为了代码的可读性,变量的声明应该与类型的声明分开

   一个整形参数一般会被传递到寄存器中,而结构体参数很可能会被传递到堆栈中。

  define 与typedef的区别

     1.define与其他的类型相配进行扩展,typedef却不行

     2.在连续变量出现时,define只控制前一个变量,typedef则控制所有的变量

     

版权声明:本文为博主原创文章,未经博主允许不得转载。

]]>

本文固定链接: http://zmrlinux.com/2015/04/22/c%e8%af%ad%e8%a8%80%e6%9d%82%e8%ae%b01/ | Kernel & Me

该日志由 root 于2015年04月22日发表在 C, C/C++ 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: C语言杂记1 | Kernel & Me
【上一篇】
【下一篇】