我是C的新手,所以我希望尽可能多地学习外部函数,指针和结构
我的想法:创建一个结构数组,然后编写“外部”函数(即保存在不同于我的主程序的文件中的函数),我可以用它来修改结构数组中结构中的字段。
我的努力:
extern void fillMass(Body *p, int size)
typedef struct body Body;
int main() {
body bodies[n] /* creates an array of structures of type body (yes this is a hw problem) */
int sizeBodies = sizeof(bodies)/sizeof(struct body);
Body *planets;
planets = &bodies[0];
fillMass(planets, sizeBodies);
}
当我在主要下面定义了fillMass时,这是有效的。但是我想在另一个文件中定义它,所以我尝试制作fillMass.h(我首先使用了fillMass.c但是后来发现很多例子,人们做了这样的事情,并使用include语句来包含它们的外部函数,我猜需要一个.h文件......?或者这只是一个约定?)
所以我写了一个名为fillMass.h的简单文件
void fillMass(Body* p, int size) { /* this is line 10 of the code */
p[0].mass=99;
p[1].mass=350; /*just testing, not using size parameter */
}
但这不起作用。我收到了错误
fillMass.h:10: error: expected ‘)’ before ‘*’ token
有什么想法?这是fillMass.h的一个问题;当我开始工作时,我是否能够毫无困难地完成我的工作? 谢谢你的阅读。
答案 0 :(得分:1)
在p [0] .mass = 99后添加'; '。
答案 1 :(得分:0)
在C中,您可以选择
使用typedef声明结构。
typedef struct body{
int mass;
}Body;
然后是函数:
void fillMass(Body *p, int size)
OR 不输入结构
struct body{
int mass;
};
然后该函数将是:
void fillMass(struct body *p, int size)
答案 2 :(得分:0)
两个文件。
body.h
struct body{
int mass;
//other elements
};
typedef struct body Body;
void fillMass(Body* p, int size) { /* this is line 10 of the code */
p[0].mass = 99;
p[1].mass = 350; /*just testing, not using size parameter */
}
的main.c
#include "body.h"
int main() {
const unsigned n = 5;
//you should determine n
Body bodies[n]; /* creates an array of structures of type body (yes this is a hw problem) */
int sizeBodies = sizeof(bodies) / sizeof(Body);
body *planets;
planets = bodies; //the same as &bodies[0]
fillMass(planets, sizeBodies);
return 0;
}