《C和指针》阅读笔记--数据 第3章数据
3.1整型字面值
字面值是字面常量的缩写,这是一种实体,指定了自身的值,并且不允许发生改变。在缺省情况下字面值是最短类型但能完整容纳这个值。
在整型字面值后添加字符L或者l,可以是这个整数被解释为long整型值,字符U或者u用于把数字指定位usigned整型值;在数值前面以0开头表示八进制(在ASCI码中,\data表示八进制),以0x开头表示十六进制。
value = value - 48;
value = value - \60;
value = value - '\0';
三条语句含义一样,但是最后一条的含义更加明显。
3.2 基本声明
char *message = "Hello world!";
这种类型的声明所面临为一个危险是你容易误解它的意思。在上一个声明中,看上去初始值是赋给表达式*message,事实上它是赋给message本身的,换句话说,前面一个声明相当于:
char *message;
message = "Hello world";
这种类型的声明所面临为一个危险是你容易误解它的意思。在上一个声明中,看上去初始值是赋给表达式*message,事实上它是赋给message本身的,换句话说,前面一个声明相当于:
char *message;
message = "Hello world";
3.3 typedef
应该使用typedef而不是#define来创建新的类型名,因为后者无法正确的处理指针类型。例如:
#define d_ptr_to_char char *
d_ptr_to_char a,b;
正确声明了a,但是b却被声明为一个字符。在定义更为复杂的类型名字时,如函数指针或指向数组的指针,使用typedf更合适。
#define d_ptr_to_char char *
d_ptr_to_char a,b;
正确声明了a,但是b却被声明为一个字符。在定义更为复杂的类型名字时,如函数指针或指向数组的指针,使用typedf更合适。
3.4 常量
#define MAX_ELEMENTS 50
int const max_elements = 50;
在这种情况下,使用#define比使用const变量更好。因为只要允许使用字面值常量的地方都可以使用前者,比如声明数组的长度。const变量只能用于允许使用变量的地方。