C语言函数初阶(1)

news2024/11/21 0:32:52
目录
1. 函数是什么
2. 库函数
3. 自定义函数
4. 函数参数
5. 函数调用
6. 函数的嵌套调用和链式访问
7. 函数的声明和定义
8. 函数递归
今天我们讲解前6个部分,下一个博客我们讲解后2个部分,因为后两个部分难度较大,讲解起来要花一点功夫和时间
首先我们来看一下函数的定义

 

其实我们在看计算机的概念的时候是很难看懂的,我们后面用代码给大家演示,同学们也可以尝试理解一下上图函数的概念 

C语言中把常用的功能进行了封装,封装成一个个的函数,提供出来大家使用

比如:scanf   printf   strlen   strcmp   rand   srand    time

C语言并不去直接实现库函数,而是提供了C语言的标准和库函数的约定功能,名字,参数,返回值

库函数一般是由编译器去实现(比如:VS2022   gcc)

那么我们怎么学习C语言库函数呢,下面给大家一个链接,此链接能够查到C语言库函数

www.cplusplus.com

打开后如下图

下图简单总结一下

 

下面我们参照文档来学习两个函数

首先看第一个

这个是函数的介绍 

如果阅读能力有限  你可以将其转化为中文方便你阅读

第二个函数

在我们计算机中有个词叫memory,我们一般把他叫为内存,并非记忆

void*是一种指针,int是整型值,size_t整型值,返回类型void*也是个指针

Fill block of memory填充内存块

下面我们直接上代码来看个实例 

这里特别注意,我们使用memset函数需要引头文件#include<string.h> 

见下图

 

大家了解到这里应该对函数有了初步的认识,我们接着往下走

 我把这三个库函数网站链接放在下面供大家使用

www.cplusplus.com

http://en.cppreference.com(英文版)

http://zh.cppreference.com(中文版)

自定义函数和库函数一样:有函数名,返回类型,函数参数

下面我们上实例写一个自定义函数

这种情况我们没有使用自定义函数实现最大值的查找,下面我们用自定义函数来实现,看下图代码

 

这里是函数的调用,返回一个整型的z

现在我们再举一个实例,这个实例大家要仔细地去理解,涉及到许多细节知识

我们的想法是输入两个整数,并且写一个函数交换两个数的值,但是结果为什么没有交换呢,下面给大家做详细讲解

我先把调试起来的截图放给大家看一下

这里的x和y有自己的独立的空间,大家观察a,b,x,y的地址可以看出他们四个的地址都是有所不同的,这里需要给大家讲解一个新的概念,见下图

实际参数--实参

形式参数--形参

形参是实参的一份临时拷贝,所以对形参的修改不会改变实参的值

这是我们要联想一下地址和指针的相关知识,指针和要交换的这两个变量是不是存在某种联系,

首先我们取出a的地址放在一个指针变量里面,等于说是把a的地址交给了形参,这就产生了联系,是不是很神奇???同理b也是相同的道理,下面我们将刚才的代码修改一下看一下修改结果是不是符合我们的理想状态

 

大家看,成功的交换了这两个值,所以,我们刚才的猜想是正确的,希望大家能够理解 

如果大家看懂了我的文字讲解,那么现在大家看一下图解,巩固刚才学的知识

 下一个知识点是函数的调用

特别注意最后一个函数的调用

get_max(4,8)返回一个最大值8

最后一个知识点是函数的嵌套调用和链式访问

这就是函数的嵌套调用,简单来讲就是一个相同的函数的重复调用

对于函数的链式访问我们给大家举一个例子,我们看代码

大家可以先尝试着用自己的理解去想一下结果为什么

这里我们来看一下printf这个函数

 

写的字符的完整的个数将会被返回,有几个字符就返回数字几,下面我们运行代码看一看 

答案为4321,希望同学们能理解

我们为了把每个数字都看清楚,我们在每个%d后面加一个空格,结果会和上一个代码运行的结果一样吗???

 大家看,空格也是一个字符,希望同学们能注意一下这个小小的细节

这就是这篇博客的主要内容

下一篇博客我们讲解函数初阶最后两部分,谢谢支持!!!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/632763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中如何进行错误处理

Vue中如何进行错误处理 在Vue应用程序中&#xff0c;错误处理是必不可少的。错误可能发生在各种地方&#xff0c;例如网络请求、组件生命周期钩子函数、计算属性、方法等等。如果我们不正确地处理这些错误&#xff0c;可能会导致应用程序崩溃或无法正常工作。在本文中&#xf…

chatgpt赋能python:Python怎么反向切片

Python怎么反向切片 在Python中&#xff0c;切片是一种用于从序列中选取子序列的方法。正向切片从序列的第一个元素开始选取&#xff0c;而反向切片则从序列的最后一个元素开始选取。本文将介绍Python中如何使用反向切片。 什么是切片 在Python中&#xff0c;切片是一种操作…

IP协议的特性总结

目录 1. 地址管理 1.1 动态分配 1.2 NAT(网络地址转换)机制 1.3 IP地址的组成 1.4 IP地址网络号和主机号的划分 1.4.1 IP地址分类(ABCDE类) 1.4.2 子网掩码 1.5 特殊的IP地址 2. 路径规划 3. IP协议报文格式 3.1 分包 3.2 组包 1. 地址管理 IP地址在之前跟大家简单…

mfc读取obj格式文件初步

3dmax做一个box&#xff1b; 导出为cube1.obj&#xff1b; 记事本打开看一下该obj文件&#xff1b; # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware # File Created: 10.06.2023 23:16:04mtllib cube1.mtl# # object Box001 #v -41.2323 0.0000 31.8849 v -4…

chatgpt赋能python:Python如何反向排序

Python如何反向排序 在Python中&#xff0c;排序是一项常见的任务。通常情况下&#xff0c;我们想对一组数据按照升序进行排序。但有时候&#xff0c;我们需要对这些数据进行反向排序&#xff0c;也就是按照降序进行排序。那么&#xff0c;Python该如何实现反向排序呢&#xf…

chatgpt赋能python:Python如何取出int内的个位数

Python如何取出int内的个位数 Python已经成为全球范围内最受欢迎的编程语言之一&#xff0c;它具有简单易学&#xff0c;可读性高和可扩展性等特点&#xff0c;因此它被广泛应用于数据科学、人工智能、网络编程、物联网和Web开发等领域。在Python编程中&#xff0c;有时需要从…

第七十天学习记录:高等数学:微分(宋浩板书)

微分的定义 基本微分公式与法则 复合函数的微分 微分的几何意义 微分在近似计算中应用 sin(xy) sin(x)cos(y) cos(x)sin(y)可以用三角形的几何图形来进行证明。 假设在一个单位圆上&#xff0c;点A(x,y)的坐标为(x,y)&#xff0c;点B(x’, y’)的坐标为(x’, y’)。则以两点…

44--Django-项目实战-全栈开发-基于django+drf+vue+elementUI企业级项目开发流程-支付宝二次封装、支付成功页面以及后台设计

一、支付宝支付介绍 需求:购买课程,付款 现在主流支付有支付宝支付、微信支持、银联支付 申请使用支付宝支付,需要有商户号(用户把钱付款到你的商户号中) 收手续费商户号要申请,需要有公司的营业执照(不需要营业执照也可以申请–》笔记)我们开发,需要商户号,公钥,…

Spring的数据访问哲学

目录 设计思路 了解Spring的数据访问异常体系 数据访问模板化 设计思路 Spring的目标之一就是允许我们在开发应用程序时&#xff0c;能够遵循面向对象(OO)原则中的“针对接口编程”Spring对数据访问的支持也不例外像很多应用程序一样&#xff0c;Spittr应用需要从某种类型的…

chatgpt赋能python:Python中使用Numpy获取数组元素的方法

Python中使用Numpy获取数组元素的方法 作为一种高级数据处理和科学计算库&#xff0c;numpy在python中被广泛使用。对于从事科研数据处理工作的工程师和研究人员来说&#xff0c;numpy已经成为必须要掌握的工具之一。 本文将讨论如何在Python中使用Numpy获取数组元素。我们将…

理解分布式锁的实现过程

背景&#xff1a;分布式锁在后端开发者会用到&#xff0c;它有哪些特点呢&#xff1f; 在分布式系统中&#xff0c;一个应用部署在多台机器当中&#xff0c;在某些场景下&#xff0c; 为了保证数据一致性&#xff0c;要求在同一时刻&#xff0c;同一任务只在一个节点上运行&am…

【计算机网络复习】第七章 物理层

物理层的位置和基本功能 u 网络体系结构的最底层&#xff0c;实现真正的数据传输 u 将二进制数据编码或调制成信号&#xff0c;发送到传输介质(传输媒体)&#xff1b; u 从传输介质接收信号&#xff0c;转换成二进制数据 物理层的主要功能 u 规定了与传输介质的接口的特…

chatgpt赋能python:判断Python中的字符类型

判断Python中的字符类型 在Python编程中&#xff0c;有时我们需要判断一个字符的类型。Python提供了几种方法来判断字符类型。本文将介绍这些方法并提供示例代码。 1. 使用内置函数ord() ord()函数可以返回一个字符的Unicode编码。使用这个方法我们可以判断一个字符是否是数…

【LGR-142-Div.4】洛谷入门赛 #13 考后分析与题解

洛谷入门赛 #Round 13 比赛分析与总结T1 魔方魔方题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示数据规模与约定 分析AC代码注意 T2 教学楼教学楼题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示样例…

尚硅谷甄选--更新中

文章目录 搭建后台管理系统模板项目初始化2.1.1环境准备2.1.2初始化项目2.2项目配置一、eslint配置1.1vue3环境代码校验插件1.2修改.eslintrc.cjs配置文件1.3.eslintignore忽略文件1.4运行脚本 二、配置**prettier**2.1安装依赖包2.2.prettierrc.json添加规则2.3.prettierignor…

Shell编程条件语句(if、case)

目录 一、Shell条件语句 1.条件表达式测试 2.文件测试 3.整数值比较 4.字符串比较 5.逻辑测试 二、if 条件语句&#xff08;串行执行&#xff09; &#xff08;1&#xff09;单分支结构 &#xff08;2&#xff09;双分支结构 &#xff08;3&#xff09;多分支结构 三…

C语言之数据在内存中的存储习题讲解

上个博客我们讲到了整型家族,对于整型家族来说有有符号和无符号之分 short signed short unsigned short int signed int unsigned int char在VS环境上其实是signed char unsigned char 对于有符号的char来说,把二进制位序列中的最高位当成符号位 对于无符号的char来…

【计算机组成原理与体系结构】控制器

目录 一、CPU的功能与基本结构 二、指令周期的数据流 三、数据通路 四、硬布线控制器 五、微程序控制器 六、微指令 一、CPU的功能与基本结构 运算器基本结构 控制器基本结构 CPU的基本结构 二、指令周期的数据流 取址周期 间址周期 中断周期 指令周期流程 三、数据通路 …

微信云开发

微信云数据库 快速开始&#xff1a;小程序/小游戏 | 微信开放文档 (qq.com) 首先微信云开发需要一个真实小程序的 AppID&#xff0c;而不能使用测试号。 然后点击这个开通云开发 云的环境大概是这样的 首先我们要初始化 否则会像这样&#xff0c;报错 写在app.js的 onLaunc…

LearnOpenGL-高级OpenGL-11.抗锯齿

本人初学者&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正 文章目录 抗锯齿多重采样锯齿产生原因多重采样方式 OpenGL的MSAA例子&#xff1a;提示GLFW离屏MSAA例子1&#xff1a;多重采样帧缓冲传送到屏幕上例子2&#xff1a;采样多重采样帧缓冲的纹理缓冲与后期效果…