char *s1 = "hello";
char s2[] = "hello";
内存模型:
+-----+ +---+---+---+---+---+---+
s1: | *======> | h | e | l | l | o |\0 |
+-----+ +---+---+---+---+---+---+
+---+---+---+---+---+---+
s2: | h | e | l | l | o |\0 |
+---+---+---+---+---+---+
- char *s1 的s1是一个指针,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错。
- char s2[] 的s2 是数组对应着一块内存区域,其地址和容量在生命期里不会改变,只有数组的内容可以改变。