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

作者前言

                                

                 个人主页::小小页面

                 gitee页面:秦大大

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

__________________________________________________________

  目录

        1.函数是什么

        2. 库函数

        3. 自定义函数

        4. 函数参数

        5. 函数调用

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

        7. 函数的声明和定义

        8. 函数递归

_____________________________________________________

插播小知识

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

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

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

4. 求平均值的方法

方法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;
}

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

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

.函数的参数

实际参数(实参)

简单的说就是传入值后的参数,如上图的&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语言的函数先介绍到这里,后面还会有后续

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

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

相关文章

两天学会用Webpack打包前端代码-day01

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 什么是 Webpack&#xff1f; 使用 Webpack 体验webpack打包过程 修改 Webpack 打包入口和出口 入口 出…

一些抄袭CSDN的爬虫网站(长期收集更新)

目录 一、CodeAntenna1. 简介2. 网址 二、待更新。。。 本文由CSDN点云侠原创&#xff0c;爬虫网站请努力加油爬。 一、CodeAntenna 1. 简介 互联网耻辱柱排行榜Top 1。本人博客里任何一点免费可读的部分都被该网站爬得体无完肤。 2. 网址 https://codeantenna.com/a/B4cMB…

MQTT 与 Kafka|物联网消息与流数据集成实践

MQTT 如何与 Kafka 一起使用&#xff1f; MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议&#xff0c;专为受限网络环境下的设备通信而设计。Apache Kafka 是一个分布式流处理平台&#xff0c;旨在处理大规模的实时数据流。 Kafka 和 MQTT 是实现物…

数学建模-时间序列分析 实例

实例1销量数据预测和实例2人口数据预测实例3上证指数预测和实例4gdp增长率预测 数据-定义时间 不加置信区间清晰点 例二 实例3

json-server Node.js 服务,前端模拟后端提供json接口服务

json-server Node.js 服务,前端模拟后端提供json接口服务 背景&#xff1a; 前后端分离的项目&#xff0c;如果前端写页面的话&#xff0c;必须的后端提供接口文件&#xff0c;作为前端等待时间太久&#xff0c;不便于开发进行&#xff0c;如果前端写的过程中自己搭建一个简要的…

使用 Qt designer

使用 Qt designer 1、配置Qt designer外部工具2、Qt designer&#xff08;Qt 设计师&#xff09;使用2.1 创建保存文件ui2.2 pyuic5.exe 工具 转化成为py文件2.3 直接导入UI文件 2、qrc资源管理器 1、配置Qt designer外部工具 实质就是 Qt\bin 工具中 designer.exe 请查看 PyQ…

sublime快速替换

1、快速查找 ControlShiftF,可以快速查找或替换某些值 2、批量在行首或者行尾添加字符串的方法 ①选中要操作的行&#xff0c;全选就按CtrlA&#xff1b;②使用快捷键CtrlShiftL 3、快速删除换行符 选中需要操作的行&#xff08;不选择则表示全选&#xff09;Ctrl H 调出…

wpf prism使用

目录 1.Nuget中安装prism框架&#xff1a; 2.改造程序启动入口 3.View和ViewModel自动关联 4.绑定 5.Command 6.Event Aggregator&#xff08;事件聚合器&#xff09;、消息通知 7.弹窗、对话服务 DialogService 8.Region区域 9.Navigation导航 10.module 模块 1.Nug…

清洁机器人规划控制方案

清洁机器人规划控制方案 作者联系方式Forrest709335543qq.com 文章目录 清洁机器人规划控制方案方案简介方案设计模块链路坐标变换算法框架 功能设计定点自主导航固定路线清洁区域覆盖清洁贴边沿墙清洁自主返航回充 仿真测试仿真测试准备定点自主导航测试固定路线清洁测试区域…

【C++技能树】Vector类解析与模拟实现

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我bua&#xff01; Vector 0.Vector简介1.Vector常用接口1.1constructor构造函数1.2 iteratorsort与findfindsort 1.3 Capacity相关接口1.4 Modify相关接口 2. Vector模拟实…

linux:secureCRT通过pem证书远程访问服务器

参考&#xff1a; secureCRT通过pem证书远程访问服务器_Fengshana的博客-CSDN博客 总结&#xff1a; 配置公钥即可

STM32 串口发送数据、串口中断 7.19

STM32 串口发送&#xff1a; 全双工 异步 串行通信方式IIC&#xff1a; CLK&#xff08;时钟线&#xff09; DAT&#xff08;数据线&#xff09;同步协议&#xff1a;通过时钟线保证数据线是有效的 异步协议&#xff1a;通过寄存器接受到数据之后产生中断&#xff0c;从而传输…

前端vue uni-app仿美团下拉框下拉筛选组件

在前端Web开发中&#xff0c;下拉筛选功能是一种非常常见的交互方式&#xff0c;它可以帮助用户快速选择所需的选项。本文将介绍如何利用Vue.js和uni-app框架来实现一个高效的下拉筛选功能。通过使用这两个强大的前端框架&#xff0c;我们可以轻松地创建具有响应式用户操作的下…

Sublime Text 4 激活教程(Windows+Mac)

下载安装 官网 https://www.sublimetext.com 点击跳转 2023.7.21 版本为4143 Windows激活方式 一、激活License方式 入口在菜单栏中"Help” -> “Enter License” 注意格式&#xff0c;可能会过期失效&#xff0c;失效就用方式二 Mifeng User Single User License E…

Linux底层

一. arm基础知识 基础&#xff1a;c语言 具有一定硬件基础 特点---》前后联系 arm目标&#xff1a; 看懂简单的汇编代码 会看电路图、芯片手册 学会如何用软件控制硬件思想 解决问题的办法 谈谈对嵌入式的理解&#xff1f; 以计算应用为中心&#xff0c;软硬件可裁剪的…

JVM Optimization Learning(二)

一、Run-time data areas PC ▪ Each Java Virtual Machine thread has its own pc (program counter) register. ▪ At any point, each Java Virtual Machine thread is executing the code of a single method, namely the current method for that thread. ▪ If that m…

数据库 - RDBMS

1、什么是数据库&#xff1f; 数据库是一种用于存储和管理数据的系统或软件。它是结构化数据的集合&#xff0c;以便于访问、管理和更新。数据库可用于在计算机系统中组织、存储、检索和处理大量数据。 数据库通常由一组相关的数据表组成&#xff0c;每个表都有特定的列和行&…

mybatis学习笔记之使用javassist生成类

文章目录 使用javassist动态生成类使用javassist动态生成类并实现接口实现接口中所有的方法工具类GenerateDaoProxy的编写 使用javassist动态生成类 Testpublic void testGennerateFirstClass() throws Exception{//获取类池&#xff0c;这个类池就是用来生成class的ClassPool …

Cloudreve搭建云盘系统,并实现随时访问

文章目录 1、前言2、本地网站搭建1.环境使用2.支持组件选择3.网页安装4.测试和使用5.问题解决 3、本地网页发布1.cpolar云端设置2.cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#xff0c;一时间公…