Namespaces
Variants

Functions

From cppreference.net

函数是一种C语言结构,它将一个 复合语句 (函数体)与一个 标识符 (函数名)相关联。每个C程序都从 主函数 开始执行,该函数要么终止,要么调用其他用户定义或库函数。

// 函数定义
// 定义一个名为 "sum" 的函数,函数体为 "{ return x+y; }"
int sum(int x, int y) 
{
    return x + y;
}

函数通过 函数声明 函数定义 引入。

函数可以接受零个或多个 参数 ,这些参数通过 函数调用运算符 实参 进行初始化,并可通过 return语句 向调用方返回值。

int n = sum(1, 2); // 形参x和y通过实参1和2完成初始化

函数的函数体由 函数定义 提供。每个在表达式中使用的 内联 (C99起) 函数(除非是 不求值表达式 )必须在程序中 仅被定义一次

不存在嵌套函数(除非通过非标准编译器扩展允许):每个函数定义必须出现在文件作用域中,且函数无法访问调用方的局部变量:

int main(void) // main函数定义
{
    int sum(int, int); // 函数声明(可出现在任意作用域)
    int x = 1;  // main函数中的局部变量
    sum(1, 2); // 函数调用
//    int sum(int a, int b) // 错误:不支持嵌套函数
//    {
//        return  a + b; 
//    }
}
int sum(int a, int b) // 函数定义
{
//    return x + a + b; // 错误:main函数中的x在sum函数中不可访问
    return a + b;
}

参考文献

  • C23 标准 (ISO/IEC 9899:2024):
  • 6.7.7.4 函数声明符(包括原型)(p: TBD)
  • 6.9.2 函数定义 (p: TBD)
  • C17 标准 (ISO/IEC 9899:2018):
  • 6.7.6.3 函数声明符(含原型)(页码: 96-98)
  • 6.9.1 函数定义 (页码: 113-115)
  • C11 标准 (ISO/IEC 9899:2011):
  • 6.7.6.3 函数声明符(含原型)(页码: 133-136)
  • 6.9.1 函数定义 (页码: 156-158)
  • C99标准(ISO/IEC 9899:1999):
  • 6.7.5.3 函数声明符(含原型)(页码:118-121)
  • 6.9.1 函数定义(页码:141-143)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 3.5.4.3 函数声明符(包含原型)
  • 3.7.1 函数定义

参见

C++ 文档 关于 函数声明