知识点:函数(1)

目录

1.函数的概念

2. 库函数 

2.1 标准库和头⽂件

2.2 库函数的使⽤⽅法 

2.2.2 头⽂件包含

2.2.3 实践

3. ⾃定义函数

3.2 函数的举例

4. 形参和实参

4.1 实参 

4.2 形参 

4.3 实参和形参的关系

5. return 语句


1.函数的概念

其实在C语⾔也引⼊函数(function)的概念,有些翻译为:⼦程序,⼦程序这种翻译更加准确⼀些。C语⾔中的函数就是⼀个完成某项特定的任务的⼀⼩段代码。这段代码是有特殊的写法和调⽤⽅法的。

在C语⾔中我们⼀般会⻅到两类函数:

库函数
⾃定义函数

2. 库函数 

2.1 标准库和头⽂件

C语⾔标准中规定了C语⾔的各种语法规则,C语⾔并不提供库函数;C语⾔的国际标准ANSI C规定了⼀ 些常⽤的函数的标准,被称为标准库,那不同的编译器⼚商根据ANSI提供的C语⾔标准就给出了⼀系列 函数的实现。这些函数就被称为库函数。
库函数相关头⽂件: https://zh.cppreference.com/w/c/header

2.2 库函数的使⽤⽅法 

库函数的学习和查看⼯具很多,⽐如:

 C/C++官⽅的链接:https://zh.cppreference.com/w/c/header

cplusplus.com: https://legacy.cplusplus.com/reference/clibrary/

 2.2.1 功能

Compute square root 计算平⽅根
Returns the square root of x.(返回平⽅根)

2.2.2 头⽂件包含

库函数是在标准库中对应的头⽂件中声明的,所以库函数的使⽤,务必包含对应的头⽂件,不包含是可能会出现⼀些问题的。

2.2.3 实践

案例:

sqrt的头文件<math.h>

int main() {
    double r = sqrt(16);
    printf("%.1lf\n", r);
    return 0;
}

2.2.4 库函数⽂档的⼀般格式

1. 函数原型

2. 函数功能介绍

3. 参数和返回类型说明

4. 代码举例

5. 代码输出

6. 相关知识链接

3. ⾃定义函数

3.1 函数的语法形式

ret_type fun_name ( 形式参数 )
{
}
ret_type 是函数返回类型
fun_name 是函数名
括号中放的是形式参数
{}括起来的是函数体
ret_type 是⽤来表⽰函数计算结果的类型,有时候返回类型可以是 void ,表⽰什么都不返回
fun_name 是为了⽅便使⽤函数;就像⼈的名字⼀样,有了名字⽅便称呼,函数有了名字⽅便调⽤,所以函数名尽量要根据函数的功能起的有意义。
函数的参数就相当于,⼯⼚中送进去的原材料,函数的参数也可以是 void ,明确表⽰函数没有参数。如果有参数,要交代清楚参数的类型和名字,以及参数个数。
{}括起来的部分被称为函数体,函数体就是完成计算的过程。

3.2 函数的举例

举个例⼦:
写⼀个加法函数,完成2个整型变量的加法操作.

int main() {
    int a = 0;
    int b = 0;
    scanf("%d%d", &a, &b);
    int c = a + b;
    printf("%d\n", c);
    return 0;
}

我们根据要完成的功能,给函数取名:Add,函数Add需要接收2个整型类型的参数,函数计算的结果也是整型。
代码1:

int Add(int x, int y)
{
    int z = 0;
    z = x + y;
    return z;
}

int main() {
    int a = 0;
    int b = 0;
    //输入
    scanf("%d%d", &a, &b);
    //计算 - 加法运算
    int c = Add(a, b);
    printf("%d\n", c);
    return 0;
}

代码2:

int Add(int x, int y)
{
    return x+y;
}
int main() {
    int a = 0;
    int b = 0;
    //输入
    scanf("%d%d", &a, &b);
    //计算 - 加法运算
    int c = Add(a, b);
    printf("c= %d\n", c);
    return 0;
}

4. 形参和实参

4.1 实参 

上面代码中:Add(a,b)

真实传递给函数的参数

a,b是实际参数

简称:实参

4.2 形参 

上面代码中:Add(int x,int y)

形式参数,简称:形参

4.3 实参和形参的关系

我们在调试的时候可以观察到,x和y确实得到了a和b的值,但是x和y的地址和a和b的地址是不⼀样的,所以我们可以理解为形参是实参的⼀份临时拷⻉。

1.形式参数和实际参数各自有独立的空间

2.形参的修改,不会影响实参

3.形参是实参的⼀份临时拷⻉。

5. return 语句

在函数的设计中,函数中经常会出现return语句,这⾥讲⼀下return语句使⽤的注意事项。

return后边可以是⼀个数值,也可以是⼀个表达式,如果是表达式则先执⾏表达式,再返回表达式的结果。

代码1:

int is_odd(int n)
{
    if (n % 2 == 1)
        return 1;
    else
        return 0;
}

int main() {
    int n = 0;
    scanf("%d", &n);
    if (is_odd(n)==1) {
        printf("是奇数:%d\n", n);
    }
    else
    {
        printf("是偶数\n", n);
    }
    return 0;
}

 

代码2:

bool is_odd(int n)
{
    if (n % 2 == 1)
        return true;
    else
        return false;
}
int main() {
    int n = 0;
    scanf("%d", &n);
    if (is_odd(n)) {
        printf("是奇数:%d\n", n);
    }
    else
    {
        printf("是偶数\n", n);
    }
    return 0;

return后边也可以什么都没有,直接写 return; 这种写法适合函数返回类型是void的情况。

代码1:

void test(int n)
{
    //n是负数,就直接返回
    //n是大于20,就打印呵呵
    //否则就打印哈哈
    if (n < 0) {
        return;
    }
    else if (n > 20) {
        printf("hehe\n");
    }
    else
        printf("haha\n");
}

int main() {
    int n = 0;
    scanf("%d", &n);
    test(n);
    return 0;
}

return语句执⾏后,函数就彻底返回,后边的代码不再执⾏。

return返回的值和函数返回类型不⼀致,系统会⾃动将返回的值隐式转换为函数的返回类型。

int test() {
    return 3.4;
}
int main() {
    int r = test();
    printf("%d\n", r);
    return 0;

 

如果函数中存在if等分⽀的语句,则要保证每种情况下都有return返回,否则会出现编译错误
函数的返回类型如果不写,编译器会默认函数的返回类型是int。
函数写了返回类型,但是函数中没有使⽤return返回值,那么函数的返回值是未知的。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值