我写了以下C代码
#include<stdio.h>
int main()
{
char name[31];
char *temp;
int i ;
scanf("%s",name);
temp = name;
name = temp;
}
Run Code Online (Sandbox Code Playgroud)
编译时出现以下错误
incompatible types when assigning to type 'char[31]' from type 'char *'
Run Code Online (Sandbox Code Playgroud)
数组名称是指向第一个元素的指针(这里是char指针..right?).对吗?上面的代码意味着字符数组和char*是不同的类型..这是真的吗?为什么要输入名称!= char*为什么我不能为char指针指定另一个char指针(数组名称)
"数组名称是指向第一个元素的指针(这里是char指针..right?).对吧?"
char name[31];
char *temp;
/* ... */
name = temp;
Run Code Online (Sandbox Code Playgroud)
在name = temp赋值中,值name被转换为指向char.转换值,而不是对象.该对象仍然是一个数组,数组不是可修改的左值.由于赋值操作数的约束要求赋值运算符的左操作数是可修改的左值,因此出现错误.