C语言函数指南:从基础到实践

什么是函数?

函数就像是一个小机器,你给它一些材料(输入),它按照特定的方式加工后,给你一个成品(输出)。比如,f(x) = x + 1 就是一个简单的函数,输入1,输出2。

## 函数的基本结构

一个C语言函数由两部分组成:

```c
返回值类型 函数名(参数列表)  // 函数头
{
    // 函数体
    return 结果;  // 返回处理后的结果
}
```

1. 函数头
- **返回值类型**:函数处理后的结果是什么类型(int, float等)
  - 如果不需要返回值,可以用`void`
  - 如果不写返回值类型,默认是`int`
- **函数名**:给函数起个好名字,一看就知道它是干什么的
- **参数列表**:函数需要哪些材料来工作

2. 函数体
- 这里是函数具体工作的代码
- 最后用`return`把结果送出来

如何设计一个函数?

让我们用加法函数为例:

1. **想名字**:这个函数做什么?做加法 → 叫`add`
2. **需要什么材料**:两个整数 → `int a, int b`
3. **怎么处理**:a + b → `sum = a + b`
4. **返回什么**:sum → `return sum`

最后写出来就是:

```c
int add(int a, int b)
{
    int sum = a + b;
    return sum;
}
```

 如何使用函数?

设计好函数后,这样使用它:

```c
int result = add(3, 5);  // 结果是8
```

 函数的放置位置

函数可以放在:
- main函数之前:直接能用
- main函数之后:需要在前面声明一下(把函数头复制过来加分号)

```c
// 声明
int add(int a, int b);

int main()
{
    // 使用函数
}

// 定义
int add(int a, int b)
{
    return a + b;
}
```

函数的好处

1. 避免重复写代码
2. 让程序更有条理
3. 主程序变得更简洁

 练习时间

试着写这些函数练练手:

1. 找两个数中的最大值
2. 判断某年是否是闰年
3. 获取某个月的天数
4. 打印100以内的所有素数

 递归:函数自己调用自己

递归就像俄罗斯套娃,大问题分解成小问题:

```c
// 计算1到n的和
int sum(int n)
{
    if(n == 1)  // 结束条件
        return 1;
    else
        return sum(n-1) + n;  // 自己调用自己
}
```

递归要注意:
1. 必须有结束条件
2. 问题要能越变越小
3. 效率不如循环高,但写起来简单

 数组作为函数参数

传递整个数组时,通常这样写:

```c
// 打印整型数组
void printArray(int arr[], int length)
{
    for(int i=0; i<length; i++)
        printf("%d ", arr[i]);
}

// 使用
int nums[5] = {1,2,3,4,5};
printArray(nums, 5);
```

 变量作用域

- **全局变量**:在所有函数外面定义,整个程序都能用
- **局部变量**:在函数或{}内定义,只在那个范围内有效

规则:
1. 先定义后使用
2. 同一个范围内不能重名
3. 不同范围内重名时,里面的会"挡住"外面的

 static关键字

`static`可以让局部变量"活"得更久:

```c
void count()
{
    static int num = 0;  // 只会初始化一次
    num++;
    printf("%d", num);
}

// 第一次调用输出1
// 第二次输出2
// 第三次输出3
```

总结

函数是C语言的重要部分,它让代码:
- 更清晰
- 更易维护
- 更少重复

记住设计函数的步骤:想名字→要什么材料→怎么处理→返回什么。多练习写函数,编程能力会快速提升!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值