什么叫做C2106“=”:左操作数必须为左值

编写VC程序的时候,给我报的错误
错误语句为 router1[0].data=ip[i].data;
前面和后面都是一个结构体
不是,data的定义是int
这个是2个的定义
struct IP {
int sender;
int receiver;
int data[20];
};
struct ROUTER1 {
int sender;
int receiver;
int data[20];
};
嘿嘿,谢啦,以前用的是数组,后来只输入一个字符,忘记修改啦,谢谢啦

char a = 0;
*((int*)a) = 10;
此时10左边的是个临时变量。
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-28
是不是赋值号左右 一边是指针,一边是数值?

router1 声明的是结构体数组?
data 声明的是什么,如果是 char 数组 也不能赋值?

总之,赋值号左右要一致。

int data[20];
data 是数组,要用循环语句赋值
for (i=0;i<20;i++) router1.data[i] = ip.data[i];

如果 router1 和 ip 是结构数组:
i= ...
for (k=0;k<20;k++) router1[0].data[k]=ip[i].data[k];本回答被提问者采纳
第2个回答  2015-09-08
router1 声明的是结构体数组?data 声明的是什么,如果是 char 数组 也不能赋值? 总之,赋值号左右要一致。

int data[20];
data 是数组,要用循环语句赋值
for (i=0;i<20;i++) router1.data[i] = ip.data[i];

如果 router1 和 ip 是结构数组:
i= ...
for (k=0;k<20;k++) router1[0].data[k]=ip[i].data[k];
第3个回答  2015-07-25
  router1 声明的是结构体数组。
  data 声明的如果是 char 数组 也不能赋值?
  总之,赋值号左右要一致。

  int data[20];

  data 是数组,要用循环语句赋值
  for (i=0;i<20;i++) router1.data[i] = ip.data[i];

  如果 router1 和 ip 是结构数组:
  i= ...
  for (k=0;k<20;k++) router1[0].data[k]=ip[i].data[k];
第4个回答  2020-02-19
是不是赋值号左右
一边是指针,一边是数值?
router1
声明的是结构体数组?
data
声明的是什么,如果是
char
数组
也不能赋值?
总之,赋值号左右要一致。
int
data[20];
data
是数组,要用循环语句赋值
for
(i=0;i<20;i++)
router1.data[i]
=
ip.data[i];
如果
router1

ip
是结构数组:
i=
...
for
(k=0;k<20;k++)
router1[0].data[k]=ip[i].data[k];