C语言第七课----------函数的定义及使用--------C语言重要一笔

这篇具有很好参考价值的文章主要介绍了C语言第七课----------函数的定义及使用--------C语言重要一笔。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者前言

                                

                 个人主页::小小页面

                 gitee页面:秦大大

                一个爱分享的小博主 欢迎小可爱们前来借鉴

__________________________________________________________

  目录

        1.函数是什么

        2. 库函数

        3. 自定义函数

        4. 函数参数

        5. 函数调用

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

        7. 函数的声明和定义

        8. 函数递归

_____________________________________________________

插播小知识

1. c99标准中,加入了变长数组的概念,数组的大小允许使用变量来指定,但是数组的大小一旦确定后,是不能再变化,变长数组不能初始化,VS环境不支持变长数组

2.define、#include 等不是关键字,是预处理指令

3.指针是地址,但是我们平时说p是指针,p是指针变量,所以我们的口头语的指针指的是指针变量

4. 求平均值的方法

C语言第七课----------函数的定义及使用--------C语言重要一笔,c语言,开发语言

方法1: (a+b)/2 (不建议写这个)

方法二:

只需把多出的部分进行平分,就行了

a+(b-a)/2

函数是什么?

就拿数学来讲,数学函数类似于f(x)=ax+b的形式,而C语言的函数就是类似于这样的,只不过

C语言的不仅仅有ax+b还有很多的内容在一起,共同组建成一个f(x),一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。

C语言中函数的分类:

1. 库函数

2. 自定义函数

库函数

简单的说库函数就是C语言编译器厂商提供的函数,使用这些库函数的前提是要调用头文件

,C语言只是起到一个规定这个函数怎能使用和创建,如下:

C语言标准规定:

1.函数的功能----比如计算字符长度

2.函数名-------strlen

3.参数--------strlen(const char* str)

4.返回类型--------isize_t

简单的总结,C语言常用的库函数都有:
IO 函数
字符串操作函数
字符操作函数
内存操作函数
时间 / 日期函数
数学函数
其他库函数

有兴趣的小可爱可以来这里看看https://cplusplus.com/reference/cctype/

MSDN(Microsoft Developer Network)
www.cplusplus.com
http://en.cppreference.com (英文版)
http://zh.cppreference.com (中文版)
有兴趣的小可爱可以看看

自定义函数

自定义函数和库函数一样,有函数名,返回值类型和函数参数。
但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间
ret_type fun_name(para1, * )
{
 statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1    函数参数

上面是函数的基本组成,简单就是 函数名 参数 函数体 返回类型

比如创建一个求两数最大值的函数定义

#include<stdio.h>
//int compare(int a, int b)
//{
//	return (a > b ? a : b);
//}
int* compare(int* a, int* b)
{
	return (*a > *b ? a : b);
}
int main()
{
	int a = 1;
	int b = 6;
	compare(&a, &b);
	printf("%d", *compare(&a, &b));
	return 0;
}

C语言第七课----------函数的定义及使用--------C语言重要一笔,c语言,开发语言

 当我们运行出来可以看出,使用第一种定义函数,没有改变nunm1和num2的值,这是因为将实参传递给形参,形参其实是实参的一种临时拷贝,对形参的修改,不会改变实参

C语言第七课----------函数的定义及使用--------C语言重要一笔,c语言,开发语言

 第二种方法是通过操作地址来实现的,

.函数的参数

实际参数(实参)

简单的说就是传入值后的参数,如上图的&num1就是实参,(有真正的值),可以理解为调用函数后的参数变成了实参

实参可以是:常量、变量、表达式、函数等。

形式参数(形参)

形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化,

函数的调用:

传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
传址调用(地址也是值,传的是地址,不是指针变量)
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操
作函数外部的变量。
练习
写一个函数可以判断一个数是不是素数
#include<stdio.h>
#include<math.h>
int is_prime(int i)
{
	int j = 0;
	for (j = 2; j <= sqrt(i); j++)
	{
		if (i % j == 0)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	int i = 0;
	for (i = 101; i <= 200; i += 2)
	{
		int a = is_prime(i);
		if (a)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

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

嵌套调用

简单的说就是函数里面有函数调用,注意一下,函数定义不能在函数内部定义

C语言第七课----------函数的定义及使用--------C语言重要一笔,c语言,开发语言

链式访问
一个函数的返回值作为另一个函数的参数
C语言第七课----------函数的定义及使用--------C语言重要一笔,c语言,开发语言

总结:

C语言的函数先介绍到这里,后面还会有后续文章来源地址https://www.toymoban.com/news/detail-601922.html

到了这里,关于C语言第七课----------函数的定义及使用--------C语言重要一笔的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】重要函数atoi的使用

    一个专门 将字符串转换为整数 的库函数,具体用法如下: 字符串str,将其内容转化为整数,该整数作为int值返回。 atoi函数的使用是非常简单的,如下: 运行如下:   重要板块:模拟实现需要我们将所有可能出现的情况列举出来,才能够完美的模拟实现出atoi库函数,情况

    2023年04月08日
    浏览(30)
  • solidity第七课——变量初始值和常数

    一,变量初始值 在solidity中,声明但没赋值的变量都有它的初始值或默认值。这一讲,我们将介绍常用变量的初始值。 1.值的初始值 2.引用类型初始值 映射mapping:所有元素都为其默认值mapping 结构体struct:所有成员都默认设为对应默认值结构体 数组array:动态数组[];静态数

    2024年04月16日
    浏览(38)
  • 网络安全进阶学习第七课——文件包含漏洞

    开发人员通常会把可重复使用的函数写到单个文件中,在 使用某些函数 时, 直接调用此文件 ,而无需再次编写,这种调用文件的过程一般被称为包含。 为了使代码更加灵活,通常会将被包含的文件设置为 变量 ,用来进行动态调用,但正是由于这种灵活性,从而导致客户端

    2024年02月15日
    浏览(50)
  • 剪枝与重参第七课:YOLOv8剪枝

    手写AI推出的全新模型剪枝与重参课程。记录下个人学习笔记,仅供自己参考。 本次课程主要讲解YOLOv8剪枝。 课程大纲可看下面的思维导图 YOLOV8剪枝的流程如下: 结论 :在VOC2007上使用yolov8s模型进行的实验显示,预训练和约束训练在迭代50个epoch后达到了相同的mAP(:0.5)值,约

    2023年04月22日
    浏览(32)
  • STM32第七课:PWM控制SG90舵机

            学习完上一课的PWM控制LED小灯实现呼吸灯的效果,我们就可以进一步学习PWM控制舵机的效果了。PWM控制舵机相信会是一个更有意思的小实验的。          舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档

    2024年04月17日
    浏览(32)
  • ACL 访问控制 过滤数据 维护网络安全(第七课)

    ACL是Access Control List(访问控制列表)的缩写,是一种用于控制文件、目录、网络设备等资源访问权限的方法。ACL可以对每个用户或用户组设置不同的访问权,即在访问控制清单中为每个用户或用户组指定允许或禁止访问该资源的权限。它通常由一系列规则组成,规则定义了一

    2024年02月10日
    浏览(48)
  • 吴恩达llama课程笔记:第七课llama安全工具

     羊驼Llama是当前最流行的开源大模型,其卓越的性能和广泛的应用领域使其成为业界瞩目的焦点。作为一款由Meta AI发布的开放且高效的大型基础语言模型,Llama拥有7B、13B和70B(700亿)三种版本,满足不同场景和需求。 吴恩达教授推出了全新的Llama课程,旨在帮助学习者全面

    2024年04月25日
    浏览(34)
  • 单片机第三季-第七课:STM32中断体系

    目录 1,NVIC 2,中断和事件的区别 3,优先级的概念  4,如何实际编程使用外部中断 5,STM32开发板通过按键控制LED  5.1,打开相应GPIO模块时钟 5.2,NVIC设置 5.3,外部中断线和配套的GPIO进行连接映射 5.4,代码文件  6,FSMC NVIC: Nested Vector Interrupt Control,嵌套向量中断控制器;

    2024年01月18日
    浏览(47)
  • React框架第七课 语法基础课《第一课React你好世界》

    从这一课开始真正进入到React框架的基础语法学习,之前的前五课做个了解即可。 ├── README.md 使用方法的文档 ├── node_modules 所有的依赖安装的目录 ├── package-lock.json 锁定安装时的包的版本号,保证团队的依赖能保证一致。 ├── package.json ├── public 静态公共目录

    2024年02月02日
    浏览(43)
  • 【小黑嵌入式系统第七课】PSoC® 5LP 开发套件(CY8CKIT-050B )——PSoC® 5LP主芯片、I/O系统、GPIO控制LED流水灯的实现

    上一课: 【小黑嵌入式系统第六课】嵌入式系统软件设计基础——C语言简述、程序涉及规范、多任务程序设计、状态机建模(FSM)、模块化设计、事件触发、时间触发 下一课: 【小黑嵌入式系统第八课】初识PSoC Creator™开发——关于PSoC Creator下载、创建项目、单片机中的hel

    2024年02月06日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包