首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

error C2106: '=' : left operand must be l-value左值有关问题

2012-04-10 
error C2106: : left operand must be l-value左值问题这里有一小段代码,总是显示M[i][0]到M[i][5]不

error C2106: '=' : left operand must be l-value左值问题
这里有一小段代码,总是显示M[i][0]到M[i][5]不是左值,这是什么问题,XX[i],YY[i]都有定义

C/C++ code
    M=(int *)malloc(t*6*sizeof(int));            for(i=0;i<t;i++)            {                M[i][0]=XX[i]*XX[i];                M[i][1]=XX[i]*YY[i];                M[i][2]=YY[i]*YY[i];                M[i][3]=XX[i];                M[i][4]=YY[i];                M[i][5]=1;            }

以上6行每行都会有不是左值的错误,还有error C2109: subscript requires array or pointer type,这又是什么意思。
之前我用的这个代码定义M就没有以上的错误,有什么区别啊
C/C++ code
M=(double **)malloc(t*sizeof(double *));            if (NULL==M)                 return;            for (i=0;i<t;i++)             {                M[i]=(double *)malloc(6*sizeof(double));                if (NULL==M[i])                     return;            }



[解决办法]
因为你第一个是一级指针。那么意味着 M[i]的类型是一个整形 int 在这个整形上面再取下标 不知道你要表达什么意思了。
[解决办法]
请看这两句的区别:
M=(int *)malloc(t*6*sizeof(int));
M=(double **)malloc(t*sizeof(double *));

热点排行