字符串就是在""里面写任意字母、数字、中文,或者不写都是字符串
(char既可以表示字符,也可以表示一个字节的整数)
1.定义字符串的两种方式
1)利用字符数组定义字符串
char str1[4] = "abc";//这里的长度要写4,因为要给\0留出位置(这一行实际上就是字符数组的表示)
printf("%s\n", str1);
细节1:在底层,实际存储的时候,C语言还是会帮我们把字符串"abc"转化为'a''b''c''\0'进行保存,写成{'a','b','c','\0'};,\0是结束标记
细节2:数组的长度,要么不写,如果要写的话,记得要把结束标记的空格给预留出来,当然长度写得很大,只是多出来的空间浪费了
细节3:通过这种方式定义的是可以修改内容的
例如:

2)利用指针定义字符串
char* str2 = "abcd";
printf("%s\n", str2);
细节1:在底层,实际存储的时候,C语言还是会帮我们把字符串"abc"转化为'a''b''c''\0'进行保存,写成{'a','b','c','\0'};,\0是结束标记
细节2:利用指针定义字符串,会把底层的字符数组放在只读常量区
只读常量区的特点:内容不可以修改,但里面使用的字符串可以复用,但是注意,是字符串里面的内容不能修改,但我可以创建一个新的字符串进行记录新的内存地址,即修改指针,
比如:
char* str = "abc";
printf("%s\n", str);
//这是修改了内存地址,是可以的
str = "aaa";
printf("%s\n", str);
验证:

练习:



2.string常见函数
|--------|------------------------|
| strlen | 获取字符串的长度(len:长度) |
| strcat | 拼接两个字符串 |
| strcpy | 复制字符串(cpy:copy缩写) |
| strcmp | 比较两个字符串(cmp:compare缩写) |
| strlwr | 将字符串变成小写(lwr:lower缩写) |
| strupr | 将字符串变成大写(upr:upper缩写) |






3.练习

练习1优化:

