#include
不是C语言的语句,第一列中的#符号表明,这一行是在编译器接受之前由C预处理器处理的语句。#include ""
首先在当前目录下寻找,如果找不到,再到系统目录中寻找,#include <>
直接去系统目录中找。- C语言里没有异常处理系统,它依赖于错误码来通知调用的函数发生了什么,返回0是成功,负数则表示失败,所以,调用者需要用if-else来检查返回码,没有其它的方法。
- C语言严格区分大小写,例:INT和Int为标识符,而int为关键字。
- 动态二维数组申请,先申请一维指针数组,二维指针就指向这个一维指针数组,然后再为该一维指针数组中的每个指针单独申请相应空间,共同组成二维数组。
- goto语句后面不能直接结束,至少还需要有一条语句,否则会报错。
- 指针使用
%p
输出,而非%x
。 - VxWorks指针32位,Linux指针64位。
- 任意非零值都可代表true(真),只有零值代表false(假),但不同系统对于标准非零值的定义就各不相同了,有的为1,有的为-1,所以对于布尔型判断应使用
if (flag)
或if (!flag)
进行,而不能if (flag == 非零值)
或if (flag != 非零值)
,同时在linux中也把返回值0作为真(因为内存初始化为0,以0值为真在一些异常情况下可以默认为真),所以均需要视具体环境决定。 - 不应对
void *
类型指针做地址运算,也即void *p; p++;
,因为p的类型未定义,地址增加的长度不能确定,若指向的为整型,则应偏移4个字节,若指向字符,则应偏移1个字节,另外在ANSI C中会报错,而在GNU中则会默认是对字符类型操作。 - 两数相除向上取整
c = (a + b - 1) / b;
。 strncpy
等中的n
代表max no.
,一般代表一个数目。