8、黑马程序员-C语言函数

本文详细介绍了C语言中的函数概念,包括函数的定义、形式参数与实际参数的区别、返回值类型等核心内容,并通过实例展示了简单的函数调用及递归操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、基本概念


1>什么是函数

任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说C语言程序是由函数构成的。

2>函数名

一般来说,我们会将不同的功能交给不同的函数去实现。为了方便调用和区分这些函数,我们需要为每一个函数都起一个唯一的名称,函数的命名必须按照标识符命名规则。利用函数名就可以调用到对应的函数。

二、函数的定义

定义函数的目的就是为了写清楚你这个函数是干啥用的,里面包含了哪些代码。函数的定义格式如下:
返回值类型  函数名(形式参数列表)
{
    函数体
}

三、形式参数和实际参数

1>基本概念

形式参数:在定义函数时,函数名后面的小括号()中定义的变量称为形式参数,简称形参
实际参数:在调用函数时传入的值称为实际参数,简称实参

2>调用函数时传递的实参个数 必须和 函数的形参个数必须保持一致
3>当使用基本数据类型作为实参时,实参和形参之间只是值传递,修改形参的值并不影响到实参
4>函数可以没有形参

四、返回值类型
1>如果没有返回值,应该用void表示返回值类型;如果一个函数没有返回值,最后面的return语句可以省略
2>如果一个函数没有明确写出返回值类型,那么代表这个函数的返回值类型是int
3>如果有返回类型,也可以不返回(不推荐这么写)

五、函数定义注意点
1>函数名不能重复
2>每一个函数都应该独立定义,不能嵌套定义

如果有函数的声明,没有函数的定义
1> 编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义
2> 链接报错,因为链接的时候会检测函数是否定义

六、函数程序

1、简单的函数调用
#include <stdio.h>

int printLine()
{
    printf("-------------\n");
    return 0;
}

int average(int num1, int num2)
{
    return (num1 + num2)/2;
}

int main()
{
    //printLine();
    
    int a = 10;
    int b = 9;
    int c = average(a, b);
    printf("c is %d\n", c);
    
    int a1 = 11;
    int b1 = 20;
    int d = average(a1, b1);
    printf("d is %d\n", d);
    return 0;
}

2、递归操作
//递归举例
#include<stdio.h>
int fun(int n)
{
    if (n==1)
        return 1;
    else
        return n*fun(n-1);
}
void main()
{
    int n;
    scanf("%d", &n);
    printf("the n! is %d: \n",fun(n));
}

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
### 黑马程序员 C语言 学习资料概述 黑马程序员提供了丰富的C语言学习资源,涵盖了从基础到高级的各种知识点。对于初学者来说,了解如何正确使用输入输出函数是非常重要的。 #### 输入函数 `scanf` 的注意事项 当使用 `scanf` 函数读取数据时,需要注意格式字符串中的换行符 `\n` 不应被包含在第一个参数内[^2]。例如: ```c // 正确的方式 scanf("%d", &a); ``` 错误的做法是在 `%d` 后面加上不必要的换行字符,这会导致程序等待更多的输入而无法正常结束。 #### 输出函数 `printf` 使用说明 关于 `printf` 函数用于不同类型的数值输出,可以参考如下占位符及其对应的解释[^3]: - `%d`: 输出一个有符号的十进制整型类型数据 - `%hd`: 输出一个有符号的十进制 short int 类型的数据 - `%ld`: 输出一个有符号的十进制 long int 类型的数据 - `%o`: 输出一个有符号的八进制整型类型数据 - `%x`: 输出一个有符号的小写字母表示的十六进制整型类型数据 - `%X`: 输出一个有符号的大写字母表示的十六进制整型类型数据 - `%u`: 输出一个无符号的十进制整型类型数据 - `%f`: 输出浮点数,默认六位小数 - `%.nf`: 控制定点记法中小数部分显示的有效数字数量(其中 n 是指定的数量) - `%lf`: 输出双精度浮点数 示范代码片段展示了基本的条件判断以及简单的整数输出操作[^1]: ```c #include <stdio.h> int main() { int a = 1; int b = 2; if (a < b) { printf("%d\n", a); // 如果 a 小于 b,则打印 a 的值 } return 0; } ``` 此段代码首先包含了标准输入输出库 `<stdio.h>` ,接着定义了一个名为 `main()` 的主函数,在该函数体内声明并初始化两个整形变量 `a` 和 `b` 。通过比较这两个变量大小来决定是否执行后续语句块内的指令;如果满足条件则调用 `printf()` 来向控制台输出相应的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值