我想知道为什么第一个语句起作用,为什么第二个语句不起作用
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"
这是错误的,因为我们无法为数字分配内容。