首页 > 编程笔记 > C语言笔记 阅读:9

C语言static静态函数的用法(附带实例)

C 语言程序中定义一个函数,如果该函数只能被所在的源文件使用,那么就称这样的函数为静态函数。

使用静态函数,可以使函数只局限在函数所在的源文件中,如果在不同的源文件中有同名的静态函数,则这些同名函数间是互不干扰的。

定义静态函数时,要在函数返回值和函数名前面加上关键字 static 进行修饰。一般形式如下:
static 返回值类型 函数名(参数列表)
例如,定义一个功能为加法运算且返回值是 int 型的静态函数,代码如下:
static int Add(int iNum1,int iNum2)
在函数的返回值类型 int 前加上关键字 static,可将原来的函数指定成静态函数。

使用内部函数的好处是,不同开发者编写函数时,不必再担心函数是否会与其他源文件中的函数同名。因为内部函数只在所在源文件中有效,不同源文件中即使有相同的函数名,也没有关系。

【实例】 这个程序包含两个源文件:main.c 和 utils.c:
utils.c:
// utils.c
#include "utils.h"

static int staticAdd(int a, int b) {
    return a + b;
}

// 普通函数
int add(int a, int b) {
    return a + b;
}

utils.h:
// utils.h
#ifndef UTILS_H
#define UTILS_H

static int staticAdd(int, int);
int add(int a, int b);

#endif

main.c:
// main.c
#include <stdio.h>
#include "utils.h"

int main() {
    int result1 = staticAdd(3, 4);  // 调用 utils.c 中的静态函数(错误,因为 staticAdd 在 main.c 中不可见)
    int result2 = add(5, 6);      // 调用 main.c 中的普通函数

    printf("Static add: %d\n", result1);
    printf("Normal add: %d\n", result2);

    return 0;
}
在这个示例中,staticAdd() 函数是静态的,只能在 utils.c 文件中被调用。如果我们尝试在 main.c 中调用 staticAdd(),将会编译错误,因为 staticAdd() 在 main.c 中是不可见的。

相关文章