我有一些编程经验,但 C 语言不多。
我有一个相当大的 C 文件。其中有多个按顺序执行的函数 - 因此在这种特殊情况下,实际上没有函数被调用两次,为了便于阅读,它们被分解,因为每个函数仍然有单独的目的。
该程序对几个可变长度的 double 长数组进行了大量计算,因此它们都是指针。两个问题:
1)从一开始就计算一次然后作为许多后续函数的输入的变量 - 我应该将它们设置为该文件中的全局变量吗?根据我使用高级语言编程的经验,全局变量不好。 C 不是这样吗?为什么?
2)当我的函数1想要返回多个指针(例如,每个指针都指向长度为n的双精度数组)时,例如相关的double *p1,double *p2,double *p3,我可以将它们组合成一个结构:
struct pointers {
double *p1, *p2, *p3;
} ptr;
foo1 将以 double *input 作为输入,并计算 ptr->p1、ptr->p2、ptr->p3,然后 ptr 将作为 foo2 的输入。我应该写吗
struct pointers *foo(double *input)
or
void foo1(double *input, struct pointers ptr)
or
void foo1(double *input, struct pointers *ptr)
为什么 C 函数通常是“void”函数,除非它只返回 int 或 double 变量?将输入和输出都作为参数 - 是否令人困惑?
我应该在 foo1 内部还是外部初始化 ptr->p1、ptr->p2、ptr->p3 ?
请注意,foo() 是主函数,它将依次调用 foo1、foo2。