当前位置: 代码迷 >> C语言 >> 结构体的char负值问题
  详细解决方案

结构体的char负值问题

热度:182   发布时间:2007-11-06 11:11:20.0
结构体的char负值问题
#define FORMAT "%d\n%s\n%f\n%f\n%f\n"
struct student
{
int num;
char name[20];
float score[3];
};
main()
{
void print (struct student);
struct student stu;
stu.num =123;
//stu.name ="li lin";//这样负值是错误的 为什么?
strcpy(stu.name,"Li lin");
stu.score[0] = 44.1;
stu.score[1] = 44.2;
stu.score[2] = 44.3;
print(stu);
}
void print(struct student stu)
{
printf(FORMAT,stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]);
printf("\n");
}

提示的错误信息 C:\Documents and Settings\People\book.c(53) : error C2106: '=' : left operand must be l-value
搜索更多相关的解决方案: 负值  char  结构体  

----------------解决方案--------------------------------------------------------
stu.name ="li lin"; //这样负值是错误的 为什么?

“赋值”

这种赋值方式只能用于初始化。



stu.name ="li lin"; 这样的话,是把字符串"li lin" 的地址赋给 stu.name,

//-----------------------------------------------------------//




[此贴子已经被作者于2007-11-6 11:20:50编辑过]


----------------解决方案--------------------------------------------------------
/* 可以像下面这样初始化 */
struct student stu = {
123,
"li lin",
{44.1, 44.2, 44.3}
}



void print (struct student); /* 函数声明最好放在 #define 下面 */

[此贴子已经被作者于2007-11-6 11:26:54编辑过]


----------------解决方案--------------------------------------------------------

谢谢两位了,看来C之路还很长啊,


----------------解决方案--------------------------------------------------------
[QUOTE]stu.name ="li lin";//这样负值是错误的 为什么?[/QUOTE]
stu.name是一个数组名,是一个常量,而常量不能作为赋值运算的左值

[此贴子已经被作者于2007-11-6 13:52:27编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案