为什么数组变量不能赋值字符串常量
好几年不碰C语言了,遇到了个很初级的问题居然一时间懵了,记录一下。
char msg_array[10];
msg_array = "hello world";
printf("msg_array = %s\n",msg_array);
大家都知道这种写法是错误的,但是为什么是错的呢?
在《c与指针》这本书里就提到过:
字符串常量的直接值是一个指针,而不是这些字符本身。
而我们都知道数组名本身就是一个指针,且其指向的地址是不可以改变的。
所以c=“hello”; 这条赋值语句就相当于在改变数组的地址常量,这显然是错误的。