函数定义与调用
函数声明/定义、参数传递(值传递)、返回值、函数原型
函数定义与调用
函数是 C 程序的构建块。C 是值传递语言——函数拿到的是参数的副本,不是原值。
学完本章你将: 掌握函数声明/定义、值传递、void 函数、函数原型的重要性。
函数基本结构
c
#include <stdio.h>
// 函数原型(声明)—— 告诉编译器函数存在
int add(int a, int b);
int main() {
int result = add(3, 4);
printf("%d\n", result); // 7
return 0;
}
// 函数定义
int add(int a, int b) {
return a + b;
}
值传递 —— C 的核心约定
c
void change(int x) {
x = 100; // 修改的是副本
}
int main() {
int a = 10;
change(a);
printf("%d\n", a); // 10 —— 没有变!
return 0;
}
💡 C 语言永远传的是值得副本。想修改原值?传指针:
c
void change(int *p) {
*p = 100; // 通过指针修改原值
}
int main() {
int a = 10;
change(&a);
printf("%d\n", a); // 100
}
void 函数
c
// 无返回值的函数
void greet(char *name) {
printf("Hello, %s!\n", name);
// return; 可以省略
}
// 无参数的函数
void printVersion(void) {
printf("v1.0\n");
}
函数原型的重要性
c
// ❌ 如果没有函数声明(或在调用之后定义)
int main() {
float result = divide(10, 3); // 编译器假设返回 int!
return 0;
}
float divide(int a, int b) { // 实际返回 float
return (float)a / b;
}
// 编译可能通过,但结果错误——隐式声明返回 int
⚠️ 始终在调用前声明函数原型,或把 main 放在文件末尾。