c语言----函数

前言

欢迎来到我的博客

个人主页:北岭敲键盘的荒漠猫-CSDN博客

 本文主要整理c语言中函数的相关知识点

适合有编程基础的人快速掌握。。。。

函数分类

系统函数:

系统内置的函数,include包含进入之后可以直接使用

用户函数:

用户自定义的函数,自己写。

用户函数定义

语法:

函数返回类型 函数名(类型 参数,类型 参数){

说明部分

语句部分

}

案例演示:

#include <stdio.h>float aver_age(float a, float b);int main()
{float a = 5.6, b = 7.2, re;re = aver_age(a, b);printf("%f", re);
}float aver_age(float a, float b)
{// 这个函数是用来求平均数的float result;result = (a + b) / 2.0;return result;
}

这里定义了一个求平均数的函数。

函数声明

如上案例中,我在main函数上面写了一个

float aver_age(float a, float b);

 因为程序是自上向下执行,我们把函数放在了主函数下面,主函数不知道有这个函数。

我们就需要把这个写到main函数上面,保证能找到这个函数。

(int型返回函数,被调函数在主函数之前定义)可以不去声明。但是有点乱,还是把函数统一声明一下比较得劲。

函数嵌套

描述:就是我们在一个函数中调用另一个函数。

案例:

主函数嵌套调用a函数,a函数调用b函数,b函数输出字幕。

#include <stdio.h>
// 声明函数
void a();
char b();int main(){        // 主函数a(); // 调用函数a
}void a(){b(); // 函数a中调用函数b
}char b(){printf("成功利用a函数调用b函数"); // 函数b输出内容
}

链式访问

描述:就是传参的时候,我们传的是一个函数,把一个函数的结果当做另一个函数的参数。

案例演示:

a函数返回1,当做参数给b,b输出a的返回值。(实际上就是传入个1,输出1)

#include <stdio.h>int main(){  //主函数调用b函数b(a());  //b函数传入a函数的结果
}int a(){     //a函数返回一个1return 1;
}int b(int a){   //b函数输出a函数的内容printf("%d", a);
}

传值传参与传址传参

传值传参:我们复制一份相同数值的变量放到函数中执行。途中这个变量发生了变化并不影响函数外面的原本的参数。

传址传参:我们就是把这个变量传到了这个函数中,它发生的任何改变都是改变的他本身。

案例演示:

传值传参

#include <stdio.h>
int change(int a, int b)
{int s;s = a;a = b;b = s;
}int main(void)
{int a, b;scanf("%d %d", &a, &b);printf("a=%d,b=%d\n", a, b);change(a, b);printf("a=%d,b=%d", a, b);
}

输入结果如下:

可以看到,我们用这个交换a,b数值的函数处理a,b。

但是最后输出的结果并没有改变。

传值传参

#include <stdio.h>
int change(int *a, int *b)
{int s;s = *a;*a = *b;*b = s;
}int main(void)
{int a, b;scanf("%d %d", &a, &b);printf("a=%d,b=%d\n", a, b);change(&a, &b);printf("a=%d,b=%d", a, b);
}

结果展示

可以看到用传址传参给他操作真正的变量。

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

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

相关文章

探秘NumPy的奥秘:元素级操作与广播机制

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、NumPy基础与元素级操作 元素级操作的引入 元素级操作详解 广播机制初探 二、NumPy矩…

Linux操作指令大全

目录 &#x1f349;引言 &#x1f349; 基础命令 &#x1f348;pwd &#x1f348;cd &#x1f348;ls &#x1f348;mkdir &#x1f348;rmdir &#x1f348;cp &#x1f348;mv &#x1f348;rm &#x1f349; 文件操作命令 &#x1f348;cat &#x1f348;tac …

深度神经网络——什么是混淆矩阵?

概述 混淆矩阵是一种在机器学习和数据科学中广泛使用的分析工具&#xff0c;用于评估分类模型的性能。它通过比较实际类别和模型预测的类别来提供模型性能的详细信息。以下是混淆矩阵的一些关键点&#xff1a; 结构&#xff1a;混淆矩阵是一个表格&#xff0c;通常有两行两列&…

stm32-USART串口外设

配置流程 初始化配置 1.开启时钟&#xff08;打开USART和GPIO的时钟&#xff09; void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); void RCC_APB1Periph…

游戏子弹类python设计与实现详解

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、子弹类设计思路 1. 属性定义 2. 方法设计 三、子弹类实现详解 1. 定义子弹…

ubuntu openvoice部署过程记录,解决python3 -m unidic download 时 unidic无法下载的问题

github给的安装顺序&#xff1a; conda create -n openvoice python3.9 conda activate openvoice git clone gitgithub.com:myshell-ai/OpenVoice.git cd OpenVoice pip install -e .安装MeloTTS: pip install githttps://github.com/myshell-ai/MeloTTS.git python -m unid…

新能源汽车的电驱热管理

前言 新能源汽车的电驱热管理是指维持电动汽车电池、电机和电控系统在适宜的工作温度范围内&#xff0c;保障车辆高效、安全、稳定运行的技术方案。随着新能源汽车的快速发展和普及&#xff0c;电驱热管理技术也日益成为关注焦点。本文将从电池、电机和电控系统三个方面介绍新…

Studio 3T 2024.3 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端,支持自然语言查询

Studio 3T 2024.3 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端&#xff0c;支持自然语言查询 The professional GUI, IDE and client for MongoDB 请访问原文链接&#xff1a;https://sysin.org/blog/studio-3t/&#xff0c;查看最新版。原创作品&#xff…

智能合作:多AI协同助力传统工作流

背景介绍 红杉资本2024 AI AGENT大会上吴恩达再次介绍了AI四大设计模式即&#xff1a; 反思&#xff08;Reflection)&#xff1b;工具使用&#xff08;Tool use&#xff09;&#xff1b;规划&#xff08;Planning)&#xff1b;多智能体协作(Multi-agent collaboration)&#…

基于深度学习和去卷积的盲源分离方法在旋转机械上的应用

关键词&#xff1a;预测性维护、盲源分离、振动分析、传递函数移除、二阶循环平稳性、轴承监测、机器学习 振动是旋转机械中主要的故障指示器&#xff0c;它们主要来源于两个方面&#xff1a;一个是与齿轮相关的振动&#xff08;主要源于齿轮啮合过程中的冲击和不平衡负载&…

【云原生--K8S】K8S python接口研究

文章目录 前言一、搭建ubuntu运行环境1.运行ubuntu容器2.拷贝kubeconfig文件二、python程序获取k8s信息1.获取node信息2.获取svc信息3.常用kubernetes API总结前言 在前面的文章中我们都是通过kubectl命令行来访问操作K8S,但是在实际应用中可能需要提供更方便操作的图形化界面…

(完全解决)Python字典dict如何由键key索引转化为点.dot索引

文章目录 背景解决方案基础版升级版 背景 For example, instead of writing mydict[‘val’], I’d like to write mydict.val. 解决方案 基础版 I’ve always kept this around in a util file. You can use it as a mixin on your own classes too. class dotdict(dict)…

浅析深度学习模型的鲁棒性

鲁棒性是指系统或者事物在面对各种不确定性、干扰、变化或攻击时能够保持稳定性和有效性的能力。在计算机科学领域&#xff0c;鲁棒性通常指的是软件、算法或系统在面对各种异常情况或者输入变化时能够正确地运行或者提供合理的输出的能力。 举个例子&#xff0c;一个鲁棒性强的…

【数据结构课程学习】二叉树_堆:Lesson2

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 1.二插树的概念和结构 &#x1f697;二叉树的概念&#xff1a; &#x1f697;特殊的二叉树&am…

LVS精益价值管理系统 DownLoad.aspx 任意文件读取漏洞复现

0x01 产品简介 LVS精益价值管理系统是杭州吉拉科技有限公司研发的一款专注于企业精益化管理和价值流优化的解决方案。该系统通过集成先进的数据分析工具、可视化的价值流映射技术和灵活的流程改善机制&#xff0c;帮助企业实现高效、低耗、高质量的生产和服务。 0x02 漏洞概述…

ssms用户登陆失败,服务器处于单用户模式。目前只有一位管理员能够连接。解决方案

文章目录 问题解决方案单用户模式什么是单用户模式&#xff1f;为什么使用单用户模式&#xff1f;实现步骤 问题 连接smss的时候发现无法连接&#xff0c;显示 服务器处于单用户模式。目前只有一位管理员能够连接 解决方案 打开SQL Server配置管理器 右键属性 在启动参数的最…

Pycharm2024搭建QT6开发环境

创建pyqt6虚拟环境 首先&#xff0c;创建一个qt6的虚拟环境&#xff1a; conda create --name pyqt6 python3.11.7激活环境&#xff1a; conda activate pyqt6安装pyqt6 安装pyqt6&#xff1a; pip install pyqt6创建代码目录 创建目录&#xff1a; 使用pycharm打开这个…

etcd集群部署

1.etcd介绍 1.1 什么是etcd etcd的官方定义如下: A distributed, reliable key-value store for the most critical data of distributed systemetcd是一个Go语言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值(key value)存储、配置共享和服务发现等…

Selenium 自动化测试工具(1) (Selenium 工作原理,常用API的使用)

文章目录 什么是自动化测试什么是测试工具&#xff1a;Selenium 工作原理(重要)Selenium API定位元素CSS 选择器xpath 定位元素 通过Java代码实现自动化1. 定位元素2. 关闭浏览器3. 获取元素文本4. 鼠标点击与键盘输入5. 清空内容6.打印信息 什么是自动化测试 关于自动化&…

UEFI EDK2源码学习(一)——环境安装

部署环境 vmvare15.0 ubuntu20.04 docker edk2 源码 具体步骤 docker安装 # 更新apt软件包索引 sudo apt-get update# 添加docker依赖 sudo apt-get install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common# 添加docker 官方…