scoreGrid为得分**,以10分*创建。我试图初始化每个Score *,从名为rank的二进制文件中读取。 Score是一个带有int和char的简单结构[7]。
Score** scoreGrid;
scoreGrid = (Score**)calloc(1,sizeof(Score*)*10);
if(!scoreGrid){
endOnScore();
}
int res, i, j;
for(i=0;i<10;i++){
((*scoreGrid) + i * sizeof(Score*)) = (Score*)malloc(sizeof(Score)); //[Error] lvalue required as left operand of assignment
if(!(*scoreGrid + i * sizeof(Score*))){
endOnScore();
}
res = fread((*scoreGrid + i * sizeof(Score*)),sizeof(Score),1,rank);
printf("res: %d\n", res);
if(res == 0){
free((*scoreGrid + i * sizeof(Score*)));
break;
}
}
我评论了我收到错误的地方..有人知道可能是什么?也许有更好的解决方案?谢谢!
答案 0 :(得分:3)
((*scoreGrid) + i * sizeof(Score*))
相当于scoreGrid[0] + i * sizeof(Score*)
,这不是您想要的。
如果您坚持不使用数组访问权限,则应编写(*(scoreGrid + i))
,这相当于scoreGrid[i]
。
要以可读的方式解决问题,请将所有((*scoreGrid) + i * sizeof(Score*))
替换为scoreGrid[i]
。