我想为我的班级创建这个程序的内存映射,但是当我尝试编译它时,我收到一个错误:
invalid operands to binary expression ('double *' and 'double *')
我是学生,请不要编辑代码打印内存位置,我需要自己编写。
main()
{
double testd;
int testi;
FILE *fpt;
struct frog {
double *x, y;
}frog;
struct frog turtle, *apple, tv[3];
testi = 2;
apple = &turtle;
apple->x = &testd
*(turtle).x = 7.3; //this is where im getting the error.
(*apple).y = 3.6;
turtle.y = 1.5;
for (testi = 0; testi < 3; testi++)
tv[testi].x = &(tv[(testi+1)%3].y);
*(tv[1].x) = 6.4;
}
答案 0 :(得分:2)
您错过了上一行末尾的;
。
编译器然后将行开头的*
解释为乘法符号并抱怨,因为它没有那么好用。
答案 1 :(得分:2)
您错过了上一行末尾的;
。
取消引用*(turtle).x
代替*(turtle.x)
错误。 .
运算符的优先级高于*
运算符,这意味着这两个语句是等效的,您甚至不需要括号:您可以*turtle.x
。
在此网站上查看precedence ordering。
答案 2 :(得分:0)
您在;
声明之后忘了apple->x = &testd
。
在旁注中,在C中你必须在结构之前说struct
,而main
函数应该返回一个整数。您还需要包含头文件,其中包含您正在使用的数据结构和函数的声明(即stdio.h
)。更不用说//
评论风格是C99,而C程序员并没有真正使用它。/* */
评论很棒。