C语言字符串:
本质是字符型数组 char *、char[]
以'\0'(整数0)结尾的一串字符
0和'\0'是相同的,但是和'0'不同,‘0’为一个字符,整数为对应的ASCII码
尽量使用'\0','\0'一定是一个字节,0可能是4个字节
string.h中有很多处理字符串的函数
两个相邻的字符串常量会被自动连接起来
不能用运算符对字符串进行计算
字符串常量存储于代码段而且只读!
使用字符串常量初始化的字符型指针变量会指向一个字符串常量
使用同一个字符串常量初始化的多个字符型指针变量,会指向同一块内存
使用字符串常量初始化的字符型指针变量本质是是一个const char *
如果想要创建可修改的字符串,应该使用字符型数组 char s[]
数组型字符串适用:本地变量 构造一个字符串
指针型字符串适用:函数参数、动态分配空间(malloc) 处理一个字符串
字符串可以表达为char* 的形式,char* 不一定是字符串(指针指向的是什么永远不确定)
字符串变量:
char *str = "Hello";
char world[] = "Hello";
char line[10] = "Hello";
a[10]最多可以接收9个字符
空字符串长度为1
字符串输入输出:
scanf("%s",string);
printf("%s",string);
scanf读入一个单词,到空格、tab或回车为止
字符串是有长度限制的,而scanf不检查输入的字符数量,所以scanf是不安全的,可以使用关键字做数量限制
c++中库函数:<cstring>
其中包含:
size_t strlen (const char *s);(返回字符串的长度,不包括“\0”)(return length of s)
char *strcpy (char *dest, const char *src);(return dest)
等函数。
c++字符串:string
库函数<string>
尽量使用string,抛弃char *
只有当要对内存进行操作或要使用byte *,才使用char *