在c中,
单引号包住的字符表示一个整数。
双引号包含的字符表示一个字符数组。也就是一个以\0结尾的字符串。
字符串常量
“hello” "Line" " " "\a\Warning!\a"
这些都是字符串常量。
在程序中使用字符串常量时会生成一个 “指向字符的常量指针”。当一个字符串常量出现于一个表达式中时,表达式所使用的值就是这个字符串所存储的地址,而不是这些字符本身。
因此,你可以把字符串常量赋值给一个“指向字符的指针”,后者指向这些字符所存储的地址。
如:
char *message = "Hello world!";
这条语句把 message 声明为一个指向字符的指针,并用字符串常量中的第一个字符的地址对该指针进行初始化。
上面语句同:
char *message;
message = "Hello world";
首先message 是一个字符指针。这个字符指针指向"Hello world"的首地址。message只是存储"Hello world"的首地址,它和"Hello world"在内存中的地址并不在一起。
而 *message 指向一个字符,这个字符就是"Hello world"的首地址存放的字符,当然就是它首个字符 “H”。