2 never setttle Never_Setttle 于 2016.03.19 13:11 提问

vs2015左操作数必须为左值

#include
#include

struct nameinfo
{
char name[50];
char phone[50];
int num[20];
};

void main()
{
struct nameinfo a;
a.num=120;//左操作数必须为左值
pritnf("%d", a.num);
system("pause");

}

这是为什么?

3个回答

oiu1010110
oiu1010110   2016.03.19 13:39
已采纳

//在这里你的num是一个数组,a.num表示这个数组的首地址(可看下面运行结果为16进制地址),这个地址是确定的,我们不可以对其进行赋值
//对变量才可以进行赋值操作
void main()
{
struct nameinfo a;
//a.num=120;//左操作数必须为左值
printf("%p", a.num);
system("pause");
}
图片说明

oiu1010110
oiu1010110   2016.03.19 13:43

//这样才可以 数组名表示首地址
void main()
{
struct nameinfo a;
a.num[0]=120;//左操作数必须为左值
printf("%d", a.num[0]);
system("pause");
}
图片说明

qq_34343660
qq_34343660 谢谢!
一年多之前 回复
Longyu_wlz
Longyu_wlz   2016.03.20 11:48

在C语言中,数组名表示的是数组的首地址,是一个地址常量。既然是常量,就不能作左值。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!