函数的知识点

本文详细介绍了C语言中的函数概念,包括库函数的使用、头文件管理、自定义函数的编写、形参和实参的区别、return语句的应用以及数组作为参数的处理。还讨论了函数的声明与定义、静态变量和作用域的概念。
摘要由CSDN通过智能技术生成

C语言中的函数就是一个完成某项特定的任务的一小段代码

1.库函数

1.1标准库和头文件

库函数也是函数,是一些已经是现成的函数,我们需要学会直接使用就可以了,这些库函数根据功能的划分都在不同的头文件中进行了声明

库函数的学习和查看工具

库函数相关头⽂件: https://zh.cppreference.com/w/c/header
cplusplus.com:
sqrt的举例
double sqrt ( double x)
            函数名          函数的参数,表示调用函数需要传递一个double类型的值
返回值类型,表示函数计算的结果是double类型的值

1.2头文件包含

库函数是在标准库中对应的头文件中声明的,库函数的使用,务必包含对应的头文件

2.自定义函数

自定义函数的形式
ret_type fun_name( 形式参数)
函数返回类型      函数名
{
    函数体(完成计算的过程)
}

3.形参和实参

在函数使用的过程中,把函数的参数分为实参和形参
实参:真实传递给函数的参数
形参(函数名后面的参数):只是形式上存在的,不会向内存申请空间,不会真实存在,所以叫做形式参数
1:形参和实参各自是独立的内存空间,我们可以理解为 形参是实参的一份临时拷贝
2:数组在传参的时候,实参就写数组名就行,形式也是数组的形式(数组在传参时写函数名)
3:实参和形参的名字可以是一样的
4:数组在传参的时候,形参的数组和实参     

4.return语句 

1)return语句后面可以是一个数值,也可以是一个表达式(先执行表达式,再返回表达式的值)
2)return语句后面可以什么都没有,直接一个return(这种写法适合函数返回类型是void的情况)
3)  return返回的值和函数返回类型不一致,系统会自动会将返回的值隐式转换为函数的返回类型
4)return语句执行后,函数就彻底返回,后边的代码不再执行
5)如果函数中存在if等分支的语句,则要保证每种情况下都有返回值,否则会出现编译错误

5.数组做函数参数

难免会有将数组作为参数传递给函数,在函数内部进行操作的情况
1.函数的形参要和函数的实参个数匹配
2.函数的参数是数组,形参也可以是写成数组的形式
3.形参如果是一维数组,数组的大小可以不写,二维数组时,行可以省略,列不能省
4.数组传参,形参是不会创建新的数组的
5.形参操作的数组和实参的数组是同一个数组

6.嵌套调用和链式访问

嵌套调用就是函数的互相调用,来写出相对大型的程序
链式访问:将一个函数的返回值作为另外一个函数的参数

有意思的代码

1.

    第一个printf打印的是第二个printf                                                                                                      的返回值,第二个printf打印的是第                                                                                                     三个printf的返回值
                                                                   第三个printf打印43,两个字符,所以第二 个printf打
                                                                   印2,一个字符,所以第三个printf打印1

2.

空格也是一个字符,所以会变

7.函数的声明和定义(函数和变量都要满足先声明后使用,函数的定义是一种特殊的声明)

在函数调用之前先声明一下这个函数, 声明函数要交代清楚函数名,函数的返回类型和函数的参数

1.单个文件时

       函数的调用一定要满足先声明后使用
       函数的定义也是一种特殊的声明,如果函数定义放在调用之前也是可以的

2.多个文件时

       我们往往会根据程序的功能,将代码拆分放在多个文件中
       函数的声明,类型的声明放在头文件(.h)中,函数的实现是放在源文件(.c)文件中

3.static和extren

       

        static是静态的意思

                                            修饰局部变量
                                            修饰全局变量// 改变了变量的链接属性,使得外部链接属性变成了内部                                                                     链接属性,及这个全局变量只能在自己所在的.c文件                                                                         中使用,即使声明了在其他.c文件中也不能使用(如果                                                                     一个全局变量,只想在所在的源文件内部使用不想被其                                                                    他文件发现,就可以使用static修饰
                                            修饰函数(和修饰全局变量是一样的)
       

        extern      

                                            用来声明外部符号

static修饰局部变量          

                                                                                               

1;

    

2;

其实编译器在编译代码的时候,就为静态(static)变量分配了地址,所以a不是进入这个函数时才创建的

4,作用域和生命周期

所用到的名字的可用性的代码范围就是这个名字的作用域
局部变量:变量所在的局部范围
全局变量:整个工程
变量创建到变量销毁之间的一个时间段就是生命周期
局部变量:进作用域到出作用域
全局变量:整个程序的生命周期
函数的返回类型如果没写的话,编译器认为返回的是int类型的值
  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值