C 语言静态函数

17 Mar 2025 | 4 分钟阅读

在本主题中,我们将讨论 C 编程语言中的静态函数。默认情况下,每个函数都被声明为全局函数,可以在程序中的任何位置访问。static 关键字用于函数名之前,将任何函数设为静态函数。C 语言中静态函数的范围仅限于其目标文件或仅限于程序。这意味着静态函数只对其程序文件可见,并限制其他文件或程序访问该静态函数。

Static function in C

语法

在这里,我们在函数名之前使用 static 关键字,将给定函数设为静态函数。

静态函数的一些要点

  1. 可以在函数名之前使用 static 关键字将其设为静态。
  2. 但是,静态函数的范围仅限于整个程序。这意味着静态函数只能在同一程序或文件中调用。
  3. 如果我们尝试从另一个文件访问静态函数,它会抛出错误。
  4. 我们可以通过在程序函数名之前添加 static 关键字,将全局函数设为静态。

在另一个文件中调用全局函数的程序

在这个程序中,我们需要创建两个文件,file1.c 和 file2.c。现在,我们在 file1.c 中创建一个全局函数,如下所示。

File1.c

file1.c 文件中定义全局函数后,现在我们创建另一个文件 file2.c,然后在其中调用全局函数 add()。

File2.c

输出

Enter any two numbers: 5
20
 The sum of the two numbers is: 25

正如我们在上面的程序中看到的,我们创建了两个文件 file1.c 和 file2.c。在 file1.c 中,我们定义了一个全局函数 add(),它在 file2.c 中被调用。在 file2.c 中,file1.c 将被视为包含全局函数定义的引用文件,并在 main() 函数中被调用以返回两个整数的和。

在另一个文件中调用静态函数的程序

让我们创建一个程序,通过在函数之前添加 static 关键字,将全局函数设为静态函数,然后在 file2.c 中调用它。

File1.c

现在我们创建另一个名为 file2.c 的文件,并调用静态函数以检查其范围。

File2.c

输出

Undefined reference to myFun() function.

当我们编译上述程序时,它会抛出错误“undefined reference to myFun()”。因为静态函数 myFun() 只能由其目标文件访问,并且不允许其他函数访问静态函数。

在同一目标文件或函数中调用静态函数的程序

让我们创建一个程序来演示 C 语言中静态函数的使用。

File1.c

输出

Enter an integer number: 25
The square of the 25 is 625

在上面的程序中,我们在同一目标文件 File1.c 中创建了一个静态函数。在 File1.c 中,main() 函数调用静态函数 mySqr() 以返回给定数字的平方。静态函数正常工作,因为静态函数的范围仅限于其目标文件或程序。

在同一文件中调用多个静态函数的程序

让我们创建一个程序,创建多个静态函数并在 main() 函数中调用它们。

Program.c

输出

Enter an integer number: 36
 The square of the 36 is 1296
 I am inside the static function.
 The square root of the 36 is 6

在上面的程序中,我们在同一目标文件中创建了多个静态函数,并且每个静态函数都在 main() 函数中被调用以返回值。