1.三字母词
三字母词使 c 环境可以在某些缺少一些必需字符的字符集上实现
三字母词 | 对应的字符 |
??= | # |
??( | [ |
??) | ] |
??< | { |
??> | } |
??/ | \ |
??! | | |
??' | ^ |
??- | ~ |
三字母词极少出现,有时也会有危险,如:
printf("Delete file (are you really sure ??):\n");
运行结果(在unix下需要加上 -trigraphs 参数来启用三元符)
Delete file (are you really sure ]:
2.转义字符
转义字符
|
意义
|
ASCII码值(十进制)
|
\a
|
响铃(BEL)
|
007
|
\b
|
退格(BS) ,将当前位置移到前一列
|
008
|
\f
|
换页(FF),将当前位置移到下页开头
|
012
|
\n
|
换行(LF) ,将当前位置移到下一行开头
|
010
|
\r
|
回车(CR) ,将当前位置移到本行开头
|
013
|
\t
|
水平制表(HT) (跳到下一个TAB位置)
|
009
|
\v
|
垂直制表(VT)
|
011
|
\\
|
代表一个反斜线字符''\'
|
092
|
\'
|
代表一个单引号(撇号)字符
|
039
|
\"
|
代表一个双引号字符
|
034
|
\0
|
空字符(NULL)
|
000
|
\ddd
|
1到3位八进制数所代表的任意字符
|
三位八进制
|
\xhh
|
1到2位十六进制所代表的任意字符
|
二位十六进制
|
3.标识符
关键字:(被保留的,不能作为标识符)
标识符长度没有限制,但标准允许编译器忽略第31个字符以后的字符,标准同时允许编译器对用于
表示外部名字(也就是由链接器操纵的名字)的标识符进行限制,只识别前六位不区分大小写的字符。
4. 隐式声明
c语言中有几种声明,它的类型名可以省略。例如,函数如果不显式的声明返回值的类型,它就默认返回整型,但隐式声明不是一个好主意,尽量少用。
5. typedef
你应该使用 typedef 而不是 #define 来创建新的类型名,因为后者无法正确地处理指针类型。如:
#define pointers char *
pointers a, b;
正确的声明了 a ,但是 b 却被声明为一个字符。
6. 指针常量和常量指针
int a;
int * const p = &a //指针常量,它是不可改变地址的指针,但是可以对它所指向的内容进行修改。
//*p可以修改 *p = 2;(OK)
//p不可以修改 p++;(ERROR)
int a,b;
const int *p = &a;(或 int const *p = &a)//常量指针,指向常量的指针,指针所指向的地址的内容是不可修改的
//*p不可修改 *p = 2;(ERROR)
//p 可以修改 p = &b;(OK)
//另外:
const int * const p = &a; (或 int const * const p = &a) // *p 和 p均不可改变
const 变量只能用于允许使用变量的地方,而 #define 只要允许使用字面值常量的地方都可以使用。
7. 链接属性
一共有三种: external(外部),internal(内部)和 none(无)。
没有链接属性的标识符(none)总是被当作单独的个体。
属于 internal 链接属性的标识符在同一个源文件内的所有声明中都指同一个实体,但位于不同源文件的多个声明则分属不同的实体。 (用 static 声明)
属于 external 链接属性的标识符无论声明多少次,位于几个源文件都表示同一个实体 。(用 extern 声明)
8. 存储类型
在C语言中,供用户使用的存储空间分为三类:程序区、静态存储区、动态存储区。
程序存放的是可执行程序的机器指令;
静态存储区存放的是在程序运行过程中需要占用的固定存储单元的变量,如全局变量
动态存储区存放的是在程序运行过程中根据需要动态分配内容空间的变量,如形式参数、局部变量
a.变量存储类型
b. 局部变量的存方式
自动变量
静态变量
寄存器变量
在函数调用结 束时就会释放这些存储空间。自动变量用关键字auto作为存储类别的申明,可以省略
即其占用的内容空间不被释放,在下次调用时,该变量已有值,这时就可以声明局部变量为“静态局部变量”,用关键字“static”进行声明
在程序运行时其初值已经确定,以后每次调用函数时不再赋值,而是保留上一次函数调用结束时的值;初值为0(整型变量)或空字符(字符型变量);
其它函数不能引用寄存器变量:C语言中允许将局部变量的值放在CPU中的寄存器中,需要时直接从寄存器中读取数据,不必再到内存中读取数据,
这种变量称为寄存器变量,用关键字“register”声明
c . 全局变量的存储方式
外部全局变量
静态全局变量
则应该在引用之前用关键字extern对该变量进行声明,声明该变量为外部全局变量
如果找不到,在链接时从其它文件中全局变量的定义.