1.字符:普通、转义、三字母
如图,三字母字符:
三字母字符
2.标识符不能以数字开头
否则,下句就混乱了:1
int 2 = 2;
3.const
- 只读变量 :非常量,在内存中;
- 类型检查 :优于#define,主动进行不一致检查;
- 保护修改 :避免手误赋值;
- 函数重载 :c++;
- 指针相关 :避免手误赋值;
1
2
3
4const int* p; //p可变,p指向的内容不可变
int const* p; //p可变,P指向的内容不可变
int* const p; //p不可变,p指向的内容可变
const int* const p; //p,p指向的内容均不可变
4.枚举
默认从0开始,可以是负数;
默认+1,可以间接;
5.字符串
以NUL字节结尾,但并不属于字符串,并且占一个字节,如“Hello”在内存中占6个字节,H,e,l,l,o,和NUL;
NULL表示空指针;
NULL指向一个其值为0的指针。NULL和NUL都是整形,值也相同,所以他们互相可以换着使用;
6.typedef
用于给一个已经存在的数据类型重命名;1
2typedef char* ptr_to_char;//
ptr_to_char a; //声明a是一个指向字符的指针
数据类型重命名typedef优于define:后者无法正确处理指针类型;1
2
d_ptr_to_char a,b;//a是指针,b是字符
7.赋值语句
下列语句中认为a和x被赋予相同的值是不正确的:1
a=x=y+3
如果x是一个字符型变量,a和y是整型,那么a的值是截断后的值;
8.sizeof
操作符,字节;
sizeof(数组名)=n*sizeof(数组[0]);
sizeof(int); //取决于环境
sizeof(a=b+1);
9.移位
有符号值的右移位操作是不可移植的;
移位操作的位数不能是负数(异常);
10.整型大小取决于环境
长整型至少应该和整型一样长,而整形至少应该比短整型一样长;
11.数组长度
当传递一个数组时,可以无需指定数组的长度(如果需要长度,则需要再增加一个长度的参数);
int read(int a[], int len);
12.signed关键字
signed关键字一般只用于char类型,因为其他类型在缺省情况下都是有符号数;
至于char是否是signed,则因编译器而异。所以,char可能等于signed char,也可能等于unsigned char。