我想知道为什么第一个语句起作用,为什么第二个语句不起作用

char a[10]="iqbal";  // it works

a="iqbal"; // does not work

最佳答案

严格来说,数组不是指针! 并且数组(数组的基址)不能是可修改的左值。也就是说,它不能出现在赋值运算符的左侧。仅在某些情况下,数组会衰减为指针。阅读此SO post以了解数组何时衰减为指针。这是另一个nice article,它解释了数组和指针之间的区别

另请了解有关左值和右值here的知识,以便您了解=的LHS上无法出现的内容



在这种情况下,内部会发生

a[0] = 'i';
a[1] = 'q';
 .
 .
a[5] = '\0';

因此,一切都很好,因为array[i]是可修改的左值。



在内部,这大致相当于
0x60000(Address of a, but is a simple number here ) = Address of "iqbal"

这是错误的,因为我们无法为数字分配内容。

09-10 01:38
查看更多