初识C语言——函数

hello呀!小伙伴们,今天小刘同学要带着大家学习的内容是—— 函数!!!

C语言中的函数部分是我们学习C语言所必学的内容,是编程中必不可少的一部分。在我们编写代码的过程中,函数这一模块可以使原本冗杂难懂的代码,转变成为美观简单的代码。当我们学会C语言的函数部分后,面对同一道题,我们可以选择的方法就多了起来。

那么,下面就跟着小刘同学来学习一下与C语言函数相关的知识吧~

当然,如果大家觉得小刘同学的讲解不错的话,可以点一波关注哦~


目录:

  • 函数是什么?

  • C语言中函数的分类

  • 库函数

  • 自定义函数

  • 函数的参数

  • 函数的调用

  • 函数的嵌套调用和链式访问

  • 函数的声明和定义

  • 函数递归


函数是什么?

  • 维基百科对函数的定义: 子程序
  • 子程序是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责 完成某项特定任务,而且相较于其他代码,它具备 相对的独立性
  • 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏,这些代码通常被集成为软件库。
  • 同时,我们并不需要记住所有的库函数,我们只需要掌握如何查询使用这些库函数的方法就可以啦!

C语言中函数的分类:

1.库函数——>使用库函数时,必须包含它所对应的头文件

  • 库函数提升了程序的 效率可移植性
  • 库函数是由C语言的 基础库提供 的。
C语言常用的库函数:
  • IO函数——>输入输出相关的函数——>#include<stdio.h>
  • 字符串操作函数——>#include<string.h>
  • 字符操作函数
  • 内存操作函数
  • 时间/日期函数——>#include<time>
  • 数学函数——>#incldue<math.h>
  • 其他库函数

2.自定义函数

由程序员自己创建设计,有函数名,返回值类型和函数参数
函数的组成:
ret_type fun_name(paral,* )
{
    statement;
}
  • ret_type返回类型,返回类型要与函数的返回值类型相对应,不需要函数返回时,将返回值类型设置为:void
  • fun_name函数名
  • statement;语句项
  • 函数体  ——>{ statement; }  
  • 输入——>函数——>输出
 

3.函数的参数

实参:实际参数——>真实传递给函数的参数
形参:形式参数
要注意生命周期的范围。
   将实参传给形参后,相当于形参是实参1的临时拷贝(形参拥有自己的空间),因此, 修改形参并不会改变实参的量 。而我们可以通过直接修改实参, 或者用指针来将形参和实参联系起来,来修改实参。
什么情况下需要传地址?
  1. 如果函数想要改变实参的值,那么就需要传地址到函数当中。
      2 .不改变实参本身就不需要传地址。

4.函数的调用

    
1.传址调用
  • 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式
  • 这种传参方式可以让函数和函数外部的变量建立起真正的联系,也就 是函数内部可以直接操作函数外部的变量
2.传值调用
  • 函数的形参和实参分别占有不同内存块, 对形参的修改不会影响实参。

5.函数的嵌套调用

函数可以嵌套调用,但是不可以嵌套定义。
不能在函数内部定义另一个函数。函数的地位都是平等的。
链式访问——>前提条件是 函数必须有返回值。
依赖的是函数的返回值,
把一个函数的返回值作为另外其他函数的参数。链式访问就像一个链条一样把这些函数串联起来。
先打印的一定是最后面的printf,因为其他的printf都没有返回值,先打印出来一个43,因为printf返回的是在屏幕上打印的字符的个数,而43是两个字符,所以第二个printf打印出一个2,又因为2是一个字符,所以第一个printf接收到的参数是2,打印的是1.

6.函数的声明和定义

函数的声明:
1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体这个函数是不是真实存在,函数的声明决定不了。
函数的定义决定了这个函数是否真实存在,且决定了这个函数它的功能是什么,等一系列的内容。
2.函数的声明一般出现在函数的使用之前。要满足 先声明后使用。
  如果,函数的定义在主函数之前,则不需要再声明这个函数的存在。
  如果,函数的定义在主函数之后,则必须要声明这个函数的存在。 ——>函数类型 函数名(参数类型,参数名)
3.函数的声明一般要放在头文件中。
  函数的声明放在头文件中,并将函数定义另外放在新的源文件中,这两个文件叫做一个模块。
  在调用时,使用#include来调用。若是调用 库函数,则使用<>,若调用 自定义函数,则使用" "。——>把头文件中的代码拷贝过来。
  代码要模块化
  项目属性——>配置属性——>常规——>配置类型——>静态库——>.lib文件
静态库的使用:#pragma comment (lib,"静态库名称")——> 导入静态库的方法
函数的定义:
    函数的定义是指函数的具体实现,交代函数的功能实现。

7.函数递归

什么是递归?
  程序调用自身的编程技巧称为递归
  递归作为一种算法在程序设计语言中广泛使用。一个过程或函数在起定义或说明中有直接或简接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
  递归的主要思考方式在于: 把大事化小。
递归的两个必要条件
  • 存在限制条件,当满足这个限制条件的时候,递归便不再继续。
  • 每次递归调用之后越来越接近这个限制条件。

补充内容:

  • 布尔类型——>头文件:<stdbool.h>

   bool类型只有两种值,真(turn)或者假(false)

   布尔类型——>一个字节。

    布尔类型适用于结果非0及1的情况

  • size_t——>无符号整型

  • 在同一个工程中,可以有多个.C文件,只能有一个main函数。

  • unsigned int ——>无符号整型——>%u
    %d——>打印有符号的整型(会有正负数)
    %u——>打印无符号整型(没有正负数)
    递归和迭代
  • 迭代——>重复
  • 循环是一种迭代,但迭代不是循环。
  • 一些问题的解决可以使用递归也可以使用迭代。
  • 使用迭代/递归时——>若使用递归,没有出现明显的问题,就使用递归,否则使用迭代。
  • 递归不会死递归,但仍然会出现栈溢出的问题。
   

创作不易,请大家多多支持!!!如有不懂的内容或者是小刘同学出错的内容,可以私信小刘同学哟~

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunlightʊə

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值