C语言字符串基本介绍
示例
在C语言中,字符串是由空字符('\0')终止的字符序列。
我们可以使用字符串文字创建字符串,字符串文字是由双引号引起来的字符序列;例如,使用字符串literal"helloworld"。字符串文字会自动以空值结尾。
我们可以使用几种方法创建字符串。例如,我们可以声明achar*并将其初始化以指向字符串的第一个字符:
char * string = "hello world";
当char*如上所述将a初始化为字符串常量时,通常将字符串本身分配在只读数据中;string是指向数组第一个元素(即character)的指针'h'。
由于字符串文字是在只读存储器中分配的,因此它是不可修改的1。任何修改它的尝试都会导致不确定的行为,因此最好添加const这样的编译时错误
char const * string = "hello world";
它有类似的效果2为
char const string_arr[] = "hello world";
要创建可修改的字符串,可以声明一个字符数组并使用字符串文字初始化其内容,如下所示:
char modifiable_string[] = "hello world";
这等效于以下内容:
char modifiable_string[] = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\0'};
由于第二个版本使用大括号括起来的初始化程序,因此除非'\0'字符通常明确地作为字符的最后一个元素包含在字符数组中,否则字符串不会自动以null终止。
1不可修改表示不能修改字符串文字中的字符,但请记住,string可以修改指针(可以指向其他位置,也可以递增或递减)。
2在不能修改两个字符串的字符的意义上,两个字符串具有相似的效果。应该注意的string是char,它是一个指向L的指针,并且它是可修改的L值,因此当数组string_arr是不可修改的L值时,它可以被递增或指向其他位置,因此无法对其进行修改。