c语言定义字符串的问题

char a[5]="hello"和char a[5]={"hello"}有什么区别? 花括号是可以去掉的吗

一样的,但是要写成6,因为字符串末尾还有‘\0’,否则它装不下

追问

装不下会报错吗?

追答

会啊,波浪线就是报错,编译不过的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-24
这两者没有差别,都是一样的。不过在这里,两个都是错了的。因为以字符串存储hello时,至少需要6个字节。本回答被网友采纳
第2个回答  2019-10-20
第一个应该是char *a="hello"
和第二个的区别是一个在常量区不可修改 一个在函数的栈区可修改追问

char*a 为啥在DEV C++里面要报错

追答

报的什么错 重名?

追问

不知道 好像就是如果用char*定义就不行 不知道是不是后面格式出问题了

第3个回答  2019-10-20
字符数组长度应设为6,保存字符串结束标志字符。要加大括号用字符串对字符数组赋值。去掉大括号是用字符串的首地址对字符数组指针变量赋值。追问

就是一个是赋值一个是传地址吗?

第4个回答  2019-10-28
花括号表示里面是一个数组,而字符串本身就是一个一维字符数组,所以{"Beijing"}
应该看作是一个2维数组,所以A要正确,应该这么写:
char
*s[]={"Beijing"};
相似回答