看下面的代码片段

char ch[10] = "hello"; // is ok

但是
char ch[10];
ch = "hello"; // showing lvalue error

根据数组衰减为指针的概念,这应该是可能的。为什么这里ch不衰减为char*?
请描述一下两者之间的区别。

最佳答案

案例1:-
char ch[10] = "hello";
把基址取1000
你的声明
1000->小时
1001->东
1002->左
1003->左
1004->o型
1005->\0
ch指向1000
案例2:-
char ch[10];
ch="hello";

1000->垃圾
1001->垃圾
1002->垃圾
1003->垃圾
1004->垃圾
1005->垃圾
等等
注意hello是一个独立的字符串,有自己的地址,所以bych="hello"
您试图指向chh的新地址。
这是不可能的,因为"hello"ch类型。
我是说char *const总是指向它的基地址,而不能更改数组的基地址。
可以更改数组的值,但不能更改数组元素的地址。

关于c - 字符数组初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21966685/

10-12 00:12
查看更多