字符
字符就是符号或图案,在计算机中是以整数形式存储的,当需要显示的时候会根据ASCII码表中的对应关系显示出相关的符号
‘\0’ -> 0
‘0’ -> 48 (字符0)
‘A’ -> 65
‘a’ -> 97
串
一种数据结构,由若干个相同类型的元素组成,有一个明确的结束标志,对串的所有操作都是以这个标志为结束信号
字符串
由字符组成的串型数据结构,以’\0’作为结束标志
字节数:
字符串长度
sizeof(arr); -> 出来长度 = 字符串长度+1(’\0’)
字符串为什么重要?
数据只能以字符串形式显示!!!
我们看到的都是字符型数据,而计算机只能针对数值型数据进行运算,因此我们需要非常频繁的把数据转换成字符串,字符串转换成数据
字符数组:
char arr[5] = {'h','e','l','l','o'}; // error 没有地方存放'\0'
char arr[6] = {'h','e','l','l','o'};
注意:要为’\0’预留位置,但可以进行修改
字符串字面值:
“由双引号包含的若干个字符”
注: 一个汉字相当于三个字符
1、以地址形式存在,且以 const char * 类型存在
printf("%s","hehe");
-> 可以直接打印
-> 一般 printf(“hehe”); 就可以直接打印
2、它存储在只读段/代码段,不能修改,否则会产生段错误
// char* p = "hehe"; // 不安全的写法
const char* p = "hehe"; // 正确写法,使程序在编译的时候就过不去,以免造成不必要的麻烦
*p = 'H'; // 不能修改,会产生段错误
printf("%s",p);
3、自带’\0’
一般情况都使用字符串字面值来初始化字符数组,编译器会把只读段中的字符串拷贝一份到栈,并且包括’\0’
char arr[] = "hehe"; // 应为arr[5],若为 arr[4]存在隐患
// 初始化的时候一般不加长度
arr[0] = 'H'; // 可以更改