如何从一个C文件到另一个C文件访问整数数组?

如何从一个C文件到另一个C文件访问整数数组?,c,arrays,C,Arrays,我有两个C文件,即“Main.C”和“algo.C”。main.c文件包含一个名为index\u数组的数组,如下所示: #include <stdlib.h> #include <stddef.h> #include <stdio.h> #include "Main.c" int algo(); int main(){ int index_array []= {1,2,3,4,5,6}; algo(index_ar

我有两个C文件,即“Main.C”和“algo.C”。
main.c
文件包含一个名为
index\u数组的数组,如下所示:

 #include <stdlib.h>
 #include <stddef.h>
 #include <stdio.h> 
 #include "Main.c"

 int algo();

 int main(){
       int index_array []= {1,2,3,4,5,6};
       algo(index_array); //to call the function from the other file
       return 0;
      }
#包括
#包括
#包括
#包括“Main.c”
int-algo();
int main(){
int-index_数组[]={1,2,3,4,5,6};
algo(index_array);//从另一个文件调用函数
返回0;
}
另一个文件如下所示:

#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>

int algo(int index_array){
    ///contains an algorithm to perform an operation using the array index from the Main.c file
      }
#包括
#包括
#包括
int算法(int索引数组){
///包含使用Main.c文件中的数组索引执行操作的算法
}
现在我怀疑的是如何从algo.c文件访问数组
index\u array[]
?我在alog.c文件中尝试的方式不允许我访问它。相反,它给出了一个错误,表示有多个“algo”声明


有人能给我一个想法吗?

最简单的方法是将
algo()
函数签名更改为接受两个参数,数组本身和大小。差不多

 int algo(int *index_array, int size) { ....
也就是说,您应该更改转发声明以匹配函数定义的签名

现在,您可以从main.c文件调用algo,如

 algo(index_array, sizeof(index_array)/sizeof(index_array[0]));


注意:请从代码中删除
#包括“Main.c”
。源文件将被编译并链接在一起以生成二进制文件。

您好,您想做什么还不清楚。您有一个以整数(与数组元素的索引关联)作为参数的函数,还是一个以数组(在这种情况下,您必须传递指向整数数组的指针)作为参数的函数?此外,为什么对
algo
有两个单独的申报?当您在
Main.c
文件中时,为什么必须包含
Main.c
。请回答上述问题,并尽量更清楚地说明你拥有什么,你想要什么,以及你在哪里陷入困境。谢谢为什么我的问题被否决了?我按照你要求的方式修改了声明,但它仍然在algo.c文件中给出了一个错误,说“algo”有多个定义……是的,这就是问题所在。但是如果我可以问一下,当您在algo.c文件中包含文件“Main.c”时,它不应该工作吗?为什么会出现错误?@Goldengirl正如我提到的,“源文件应该被编译并链接在一起以生成二进制文件。”通常源文件包含定义,如果包含这些定义,则最有可能一直出现多个定义错误。