c - C中的外部函数修改结构体数组

标签 c arrays pointers struct

我是 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);
}

当我在 Main 下面定义了 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 的问题;当我开始工作时,我是否能够毫无困难地完成我打算做的事情? 感谢您的阅读。

最佳答案

在 p[0].mass = 99 后面添加“;”。

关于c - C中的外部函数修改结构体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22288395/

相关文章:

c - 工作队列的这些标志是什么意思?

php - PHP 函数可能未定义的参数

java - 逐位比较两个 4 位整数

Java:数组中交替 boolean 值

c - 无限滚动

c - 使用 printf() 打印数据类型 char

c - 如何获得符号链接(symbolic link)的绝对路径?

C++递归函数返回值

c++ - 为什么在指向对象的指针数组周围存在未初始化的堆内存? (C++)

pointers - 有没有安全的替代方法可以将不安全的slice::from_raw_parts替换为原始指针?