Я не могу комментировать принятый ответ (newb), поэтому вот несколько способов определить массив один раз, но не как глобальную переменную:
- Уродливый: определить массив в
arr.h
, затем в foo1/2/3()
, просто #include "arr.h"
(внутри тела функции).
// arr.h
const int arr[197] = { 55, -63, 12, -17, 121 , ... };
// file1.c
void foo1()
{
#include "arr.h"
// Use arr like a local variable
}
Менее уродливый, но все же довольно уродливый: определите
arr
в
arr.h
, но включите только в main.Затем передайте arr в качестве аргумента
foo1/2/3
int main()
{
#include "arr.h"
foo1(arr);
foo2(arr);
foo3(arr);
}
Учебник:
// arr_init.c
void init_arr(int arr[197])
{
const int src_arr[197] = {55, -63, 12, -17, 121 , ...};
memcpy(arr, src_arr, sizeof(src_arr));
}
// arr_init.h
extern void init_arr(int arr[197]);
// main.c
#include "init_arr.h"
int main()
{
int arr[197];
init_arr(arr);
foo1(arr);
foo2(arr);
foo3(arr);
}
// file1.c
void foo1(const int arr[197])
{
...
}
...
Лучше: используйте глобальный констант как
@ chux сказал .