C - void函数(void),参数和返回值

J.M*_*.M. -2 c parameters syntax return-value void

我得到了一个包含几个声明如下的函数的大型C文件:

void function_a(void);
Run Code Online (Sandbox Code Playgroud)

这些函数写在主程序之上:

static void function_a(void) { .... }
Run Code Online (Sandbox Code Playgroud)

在主程序中,这些函数称为:

function_a();
Run Code Online (Sandbox Code Playgroud)

现在据我所知,声明为上面写的函数既不使用参数也不使用返回值.但是,在这些函数中,使用了变量和数组,这些变量和数组未在这些函数中定义,而是仅在主程序中定义.

这是非常正确的C语法吗?如果没有作为参数移交,那么函数如何从主程序访问数据?

此外,主程序使用变量,这些变量在它调用的函数中计算.

avy*_*ysk 5

你能提供更多的背景吗?在C中,您无法从另一个函数访问变量,但您可以访问全局变量.

以下程序有效并将输出3,因为它i是一个全局变量,并且随处可见.

#include <stdio.h>

int i = 2;

void plusone() {
        i = i + 1;
}

int main() {
        plusone();
        printf("i = %d\n", i);
}
Run Code Online (Sandbox Code Playgroud)

另一方面,下面的程序不会编译,因为它imain()函数本地的,并且在其他地方是不可见的.

#include <stdio.h>

void plusone() {
        i = i + 1;
}

int main() {
        int i = 2;
        plusone();
        printf("i = %d\n", i);
}
Run Code Online (Sandbox Code Playgroud)

说,使用全局变量是一种不好的做法,应该避免.

  • @JM你必须将这些变量声明为`extern`,以便你可以使用它们. (3认同)