字符串表示#
在 C 语言中,没有专门的字符串数据类型。字符串通过字符数组间接表示。例如,字符串 "Hello"
使用字符数组表示如下:
特别的,字符串以特殊标记字符 '\0'
结尾,位模式是一个全零的字节。'\0'
称作 null-terminating 字符,也记作 NUL
。注意区别空指针 NULL
,这是两个不同的东西。
回想 Lab 1 挑战部分的全零字节检测,合法的字符串都会以一个全零字节结尾。
以数组的观点来看待字符串,我们可以参照数组,使用 char[]
来声明字符串。在分配字符串数组的时候,一定记得多分配一个字符空间用于存储终止字符。
char myString[6];
myString[0] = 'H';
myString[1] = 'e';
myString[2] = 'l';
// …
myString[5] = '\0'; // don't forget it!!!
// or
char myString[] = {
'H',
'e',
'l',
'l',
'o'
};
访问或者修改字符串中的某个字符,可以通过字符数组下标;通过数组名,也可以访问整个字符串,C 语言检测到终止字符会自动判断字符串结尾。
printf("%c\n", myString[2]); // 'l'
myString[1] = 'a';
printf("%s\n", myString); // "Hallo"