#include <stdio.h>
int main() {
char str[10] = "Hello"; // 内存里:['H']['e']['l']['l']['o']['\0']
char *s = str; // s 拿到了数组第一个格子的门牌号
char c = 'X'; // c 是一个独立的普通变量,存了个 'X'
printf("1. s 等于多少? 答:%p (这是一个地址,比如 0x7ffc...)\n", s);
printf("2. *s 等于多少? 答:%c (因为是 s 指向的格子里的内容,即 'H')\n", *s);
printf("3. c 等于多少? 答:%c (直接存的字符 'X')\n", c);
printf("4. 做赋值:c = *s; \n");
c = *s; // 把 s指向格子里的 'H',复制一份给 c
printf("5. 现在 c 变成了:%c (和 *s 值一样,但 c 是个独立拷贝)\n", c);
// 最关键的区别来了:改 c 不影响原字符串
c = 'Z';
printf("6. 改了 c 为 'Z',但原字符串 *s 还是:%c (原数组纹丝不动)\n", *s);
// 改 *s 才会影响原字符串
*s = 'Y';
printf("7. 改了 *s 为 'Y',现在原字符串变成了:%s (第一个字母变 Y了)\n", str);
return 0;
}