1. C语言函数基础与实战解析
1.1 函数定义与基本结构
在C语言中,函数是程序的基本构建块,它封装了特定功能的代码。一个标准的C函数定义包含以下要素:
c复制返回值类型 函数名(参数列表) {
// 函数体
return 返回值; // 如果返回值类型不是void
}
以加法函数为例:
c复制int add(int a, int b) {
return a + b;
}
注意:C语言是强类型语言,函数声明时必须明确指定参数和返回值的类型。这与Python等动态类型语言有本质区别。
1.2 函数参数传递机制
C语言采用值传递(pass by value)方式:
- 调用函数时,实参的值会被复制给形参
- 函数内部对形参的修改不会影响实参
- 若要修改实参,需要使用指针
c复制void swap(int a, int b) { // 无效的交换
int temp = a;
a = b;
b = temp;
}
void real_swap(int *a, int *b) { // 有效的交换
int temp = *a;
*a = *b;
*b = temp;
}
1.3 函数调用规范
C语言函数调用有几个重要特性:
- 函数不能嵌套定义(C++11后支持lambda表达式,但标准C不支持)
- 不支持函数重载(同名函数即使参数不同也会冲突)
- 调用前必须声明或定义函数
c复制// 错误示例:函数嵌套
void outer() {
void inner() { // 编译错误
// ...
}
}
// 错误示例:函数重载
void print(int a) {...}
void print(double a) {...} // 会与上一个函数冲突
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实战案例:图形打印函数
2.1 固定尺寸矩形打印
c复制void print1() {
for(int i=0; i<10; i++) {
for(int j=0; j<8; j++) {
printf("*");
}
printf("\n");
}
}
编程技巧:外层循环控制行数,内层循环控制列数。这种嵌套循环结构是处理二维图形的经典模式。
2.2 带返回值的矩形打印
c复制int print2() {
print1(); // 复用已有函数
return 10 * 8; // 返回面积
}
代码优化建议:
- 避免硬编码数字,使用宏定义或常量
- 考虑添加错误处理机制
改进版:
c复制#define ROWS 10
#define COLS 8
int print2_improved() {
if(ROWS <=0 || COLS <=0) {
printf("Invalid dimensions!\n");
return -1; // 错误码
}
print1()
