结构体的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
----------------解决方案--------------------------------------------------------
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编辑过]
----------------解决方案--------------------------------------------------------