C语言函数的声明、定义和调用(非常详细)

张开发
2026/6/9 17:56:12 15 分钟阅读
C语言函数的声明、定义和调用(非常详细)
在 C 语言程序中函数是一段具有特定功能的代码块借助函数我们可以将代码分解成小的、可重用的模块从而提高程序的可读性和维护性。对于初学者来说掌握函数的声明、定义和调用是学习 C语言函数的第一步C语言函数的定义函数的定义是指编写函数的具体实现包括它的返回值类型、名称、参数以及执行逻辑。定义函数的语法如下返回值类型 函数名(参数列表) { 函数体; return 返回值; // 如果返回值类型不是 void则需要返回一个值 }让我们分解一下这个结构来看一个简单的例子定义一个计算两个整数之和的函数int add(int a, int b) { int sum a b; return sum; }在这个例子中add() 函数接受两个整数参数 a 和 b计算它们的和并通过 return 返回结果。C语言函数的调用定义好函数后我们需要通过调用来执行它。函数调用通常是将函数名加上参数如果有写在程序中合适的位置。调用时程序会跳转到函数定义处执行其中的代码然后返回到调用点继续执行。调用函数的语法如下函数名(实参列表);结合上面的 add() 函数我们可以在 main() 函数中调用它#include int add(int a, int b) { int sum a b; return sum; } int main() { int result add(3, 5); // 函数调用 printf(3 5 %d\n, result); return 0; }执行程序输出结果为3 5 8这里add(3, 5) 是函数调用3 和 5 是实参实际参数它们被传递给函数的形参 a 和 b函数计算后返回 8并赋值给 result。函数参数传递的细节在函数调用时实参会传递给形参。C语言采用的是“按值传递”pass by value即形参是实参的副本对形参的修改不会影响实参。例如#include void change(int x) { x 10; } int main() { int a 5; change(a); printf(a %d\n, a); return 0; }运行程序输出结果为a 5这里change() 函数修改了 x但 a 的值没有改变因为 x 是 a 的副本。除了按值传递还可以将形参的地址传递给实参这样对形参的修改实参也会改变感兴趣的读者可阅读《C语言指针变量作为函数参数》一文。C语言函数的声明在 C语言中函数的定义和调用顺序有一定的要求如果函数的定义在调用之后必须先声明函数否则编译器会因为找不到函数定义而报错。函数声明的语法如下返回值类型 函数名(参数类型列表);声明只需要提供函数的“签名”返回值类型、函数名、参数类型不需要写函数体。例如#include int add(int a, int b); // 函数声明 int main() { int result add(3, 5); printf(3 5 %d\n, result); return 0; } int add(int a, int b) { // 函数定义 return a b; }在这个例子中int add(int a, int b); 是函数声明告诉编译器 add() 函数的存在及其形式。这样即使定义在后面调用也不会出错。如果函数定义在调用之前可以省略声明。无参数和无返回值的函数有些函数不需要参数或返回值这时可以用 void 类型。例如#include void sayHello() { printf(Hello, World!\n); } int main() { sayHello(); // 调用无参数函数 return 0; }执行程序输出结果为Hello, World!这个函数没有参数直接调用 sayHello() 即可执行。函数调用中的常见问题在定义和调用函数时初学者可能会遇到一些问题。以下是一些常见情况及解决方法问题原因解决方法未定义的函数函数调用前未声明或定义提前声明函数或将定义放在调用前参数个数不匹配调用时提供的实参个数与定义不符检查调用时的实参与形参是否一致返回值缺失声明了返回值类型但未返回确保非 void 函数有 return

更多文章