巨兔12138 发表于 2020-2-27 21:45:09

char *name = “FishC” 和 char name[] = {‘F’, ‘i’, ‘s’, ‘h’, ‘C’}

请问 char *name = “FishC” 和 char name[] = {‘F’, ‘i’, ‘s’, ‘h’, ‘C’} 是否等价?
答:两者并非等价。char *name = “FishC” 应该与 char name[] = {‘F’, ‘i’, ‘s’, ‘h’, ‘C’, ‘\0’} 等价。没想到我又考你这个吧?!
这是课后作业的一个题,请大神给解释一下为什么,还有char*name是什么意思啊...{:5_104:}

qiuyouzhi 发表于 2020-2-27 21:52:43

存放字符串有两种方法,第一种是字符指针(char *name),第二个是字符数组(char name[])
第一个不会自动往里边存储'\0',而字符数组会

wp231957 发表于 2020-2-27 21:54:59

前者不能修改

4goodworld 发表于 2020-2-27 22:04:49

一个是char指针,
一个是char数组,

char name = "xxx"; //存放在静态区,只是可读区,不可改!
char name[] = "xxx"; //存放栈区,可读可改

影影影影影少丶 发表于 2021-4-15 18:23:51

qiuyouzhi 发表于 2020-2-27 21:52
存放字符串有两种方法,第一种是字符指针(char *name),第二个是字符数组(char name[])
第一个不会自动 ...

请问字符指针不会自动往里面储存'\0',那不就是char *name = “FishC” 和 char name[] = {‘F’, ‘i’, ‘s’, ‘h’, ‘C’} 等价了吗?
那为啥小甲鱼答案说char *name = “FishC”应该与 char name[] = {‘F’, ‘i’, ‘s’, ‘h’, ‘C’, ‘\0’} 等价。
页: [1]
查看完整版本: char *name = “FishC” 和 char name[] = {‘F’, ‘i’, ‘s’, ‘h’, ‘C’}