函数—C(上)

Python自动化神器:5分钟搞定PSCAD仿真波形图导出到Word(附WPS兼容方案) 本文介绍如何利用Python自动化库快速将PSCAD仿真波形图导出到Word或WPS,大幅提升电力系统仿真工程师的工作效率。通过精准坐标定位、智能排版和批量处理功能,实现仿真报告的自动化生成,同时提供WPS兼容方案,适用于不同办公环境。 阅读详情

前言

如何组织函数?C的设计思路是把函数用作构建块,是完成特定任务的独立程序代码单元。本文将详细介绍函数相关结构、使用方式以及背后相关细节。希望能够帮助读者进一步理解C函数。

1. 函数是什么

  • 函数是一个大型程序中的某部分代码,有一个或多个语句块组成,负责完成某项特定得任务,而且相较于其他代码,具有相对得独立性。
  • 函数一般会有输入参数和返回值,提供对过程得封装和细节的隐藏,这些代码通常被集成位软件库。

2. 库函数

为什么会有库函数

在C语言中有一些类似于printf()、strcpy()等描述基础功能的函数,它们不是业务性代码,在开发过程中,每一个程序员都有可能用到。为了支持可移植性和提高程序效率,C语言的基础库提供了一系列类似的库函数来帮助程序员进行软件开发。

那怎么学习库函数呢?

www.cplusplus.com
http://en.cppreference.com (英文版)
http://zh.cppreference.com(中文版)
MSDN(Microsoft Developer Network)

以下是两个具体实例:
1. strcpy
在这里插入图片描述
2. memset
在这里插入图片描述

3. 自定义函数

库函数不能所有事情,否则要程序员干吗?所以更重要的是自定义函数。
自定义函数和库函数一样,有函数名,返回值类型和函数参数。但不同的是这些都是由我们自己来设计的,给了程序员更大的发挥空间。

我们先举一个例子

写一个函数可以找到两个整数中的最大值。

#include <stdio.h>
//自定义函数,get_max函数设计
int get_max(int x, int y)
{
	return x > y ? x : y;
}

int main()
{
	int num1 = 0;
	int num2 = 0;
	//输入
	scanf("%d %d", &num1,&num2);
	//计算
	int max = get_max(num1, num2);
	//输出
	printf("max=%d\n", max);
}

再举个例子

写一个函数交换两个整型变量的内容

//以下写法是错误的
#include <stdio.h>
//形式参数——形参
void Swap(int a, int b)
{
	int tmp = a;
	a = b;
	b = tmp;
}

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	printf("交换前: a=%d b=%d\n", a, b); //实际参数——实参
	// (传值调用) 在这种设计中,把实参传给形参时
	//形参相当于实参的一份临时拷贝
	//所以对形参的修改不会影响实参
	Swap(a, b);
	printf("交换后:a=%d b=%d\n", a, b);
	return 0;
}
![运行结果](https://img-blog.csdnimg.cn/fe1628f8f3294228983a44aa3ae9a135.png#pic_center)

//正确学法
#include <stdio.h>
void Swap(int* a, int* b)
{
	int tmp = *a;
	*a = *b;
	*b = tmp;
}

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	printf("交换前: a=%d b=%d\n", a, b);
	Swap(&a, &b);
	// (传址调用)通过形参的指针可以能过访问函数外部的变量
	//并对该变量进行操作
	printf("交换后:a=%d b=%d\n", a, b);
	return 0;
}
![运行结果](https://img-blog.csdnimg.cn/2b4c2ac9d50d4cb3a51125745805173b.png#pic_center)

4. 函数的参数

4.1 实际参数(实参)

真实传递给函数的参数叫实参。
实参可以是:变量、常量、表达式、函数等。
无论实参是何种类型的参数,在进行函数调用时,它们都必须有确定的值,以便把这些值传递给形参。

int get_max(int x, int y)
{
	int z = (x > y ? x : y);
	return z;
}

int main()
{
	int a = 0;
	int b = 0;
	//输入
	scanf("%d %d", &a, &b);//3 5
	//使用函数来完成
	int m = get_max(a, b);//变量

	m = get_max(a, 7);//变量,常量

	m = get_max(a, 2+3);//表达式

	m = get_max(a, get_max(4, 8));//函数的参数是函数调用

	//输出
	printf("较大值是:%d\n", m);

	return 0;
}

4.2 形式参数(形参)

形式参数是指函数名后括号中的变量,因为形式参数只有函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。
形式参数当函数调用完成之后就会销毁,因此形式参数只在函数中有用。

在这里插入图片描述
这里可以看到Swap1()函数在调用时,x、y拥有自己的空间,同时拥有和实参一模一样的内容,而Swap2()函数调用时,px和py地址和实参时一样的。
所以我们可以简单的认为:形参实例化之后其实相当于实参的一份临时拷贝。

5. 函数调用

5.1 传值调用

  • 函数的形参和实参分别占用不同内存块,对形参的修改不会影响实参。

在这里插入图片描述
在这里插入图片描述

5.2 传址调用

  • 传址调用是把函数外部创建变量的内存传递给函数参数的一种调用函数的方式。
  • 这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。

在这里插入图片描述
在这里插入图片描述

结尾

本片文章到此就结束了。如果对你有帮助记得点赞加关注哦!感谢您的支持!!
函数—C(下)

【Python_PySide6学习笔记(二十四)】菜单栏QMenuBar类的基本用法 此篇文章中介绍 PySide6 中 QMenuBar 类的基本用法,包括"创建菜单栏"、"创建一级菜单"、"创建二级菜单"等,会持续更新,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。 阅读详情

相关推荐

深入学习FIFO

深入理解FIFO、同步FIFO和异步FIFO、FIFO设计的难点以及FIFO深度计算

好好学习,天天向上 2643

C语言函数

函数的概念 每个C程序都至少有一个函数,即主函数main(),如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大臃肿,结构复杂,代码重复。 我们可以根据程序的逻辑和任务的分工把代码划分到不同的自定义函数中,main()更关心业务逻辑和处理...

C语言技术网-码农有道 5万+

IGBT基础知识

IGBT

u010783226的专栏 1万+

【C语言函数基础】

文章目录1.函数2.C语言函数分类2.1 库函数2.1.1 库函数的分类2.1.1 库函数的学习2.2 自定义函数3.函数的参数3.1 实际参数3.2 形式参数4.函数的调用4.1 传值调用4.2 传址调用5.函数的声明和定义 1.函数 百度百科对函数的定义:子程序 在计算机科学中,子程序是一个大型程序中的某部分代码,有一个或者多个语句块组成,它负责完成某项特定的任务,而且相比于其他的代码,具备相对的独立性。 一般来说会有输入参数和返回值,提供对过程的封装和细节的隐藏,这些代码通常被集成为软件库。 2.

qq_43727529的博客 4972

汇川EASY系列之以太网通讯(MODBUS_TCP做从站)

汇川easy系列PLC做MODBUS_TCP从站,,ModbusTCP服务器默认开启,无需设置通信协议(即不需要配置),端口号为“502”。ModbusTCP从站最多支持31个ModbusTCP客户端(ModbusTCP主站)同时连接。

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 8861

ENU坐标系实战:5分钟搞定无人机导航中的站心坐标转换

本文针对无人机导航中GPS坐标与视觉感知不匹配的定位漂移问题,提供了基于ENU坐标系的实战解决方案。通过Python代码演示了如何快速、精准地实现地心地固坐标与站心坐标之间的转换,并详细解释了转换原理、精度对比及工程优化技巧,帮助开发者从根本上解决局部相对定位不准的难题。

mqtt6iot的博客 552

什么是c语言函数,C语言中的函数是什么意思

C语言中的函数是什么意思简单来说函数就是c语言的模块,一块块的,有较强的独立性,但是可以相互调用。这是c和c++区分的地方,c++面向对象,对象独立完成功能,无需调用。一个c程序就可以是一个函数,里面再包含n个函数。【延展】C语言中函数和函数体的区别是什么?第一、 简单来说函数就是c语言的模块,一块块的,有较强的独立性,但是可以相互调用。一个c程序就可以是一个函数,里面再包含n个函数,有固定输入和...

weixin_39986543的博客 6503

【四足机器人项目实战】四足机器人腿部机械结构设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–腿部机械结构设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 为了减轻腿部惯量,使用有限元分析着重进行轻量化设计,小腿采用工字梁方案,大腿采用内部镂方案,并使用1.5 mm的AL 6061硬质材料,轻量化的腿部设了腿部运动时摆动

qq_35635374的博客 7538

C语言——函数

C语言中的函数又常常被称为子程序,是用来完成某项特定的工作的一段代码。就像我们生活中的模块化建造技术,类比模块化建房子的过程:整个程序好比最终要建成的房子,而函数所代表的就是每部分模块(如第一层,第二层或者屋顶···),将这些模块灵活的拼接,就搭建成了最后的房子。从函数的定义角度:我们可以把函数分为库函数和自定义函数是由用户根据需要自行编写的函数,创建格式如下:ret_typename形式参数函数体(用来描述函数执行过程的部分)创建例子:int决定了z的返回类型是整形int。

tan_run的博客 2087

手把手教你学Simulink--基于电能质量与无功补偿的场景实例:统一电能质量调节器(UPQC)的联合控制仿真

在现代电力系统中,电能质量问题有源电力滤波器(APF)→ 治理谐波与无功动态电压恢复器(DVR)→ 补偿电压暂降/暂升静止无功发生器(SVG)→ 无功补偿与电压支撑而统一电能质量调节器(Unified Power Quality Conditioner, UPQC)是一种集串联补偿与并联补偿于一体的全能型电能质量治理装置✅ 电压类问题:暂降、暂升、不平衡、闪变✅ 电流类问题:谐波、无功、三相不平衡✅ 实现双向有功交换(储能型)串联单元(DVR功能):串联于线路,控制电源侧电压质量并联单元。

MHD0815的博客 236

《30天入门 SAP BTP 开发》教程的目录和使用说明,建议收藏

本教程分为两部分:第一部分为SAP BTP入门系列,包含从基础概念到操作步骤的系统性学习内容,建议零基础用户按顺序学习;第二部分为专题文章集合,涵盖SAP BTP的多个技术点,适合已有基础的用户按需查阅。教程包含账号申请、Global Account操作、Java应用开发、AI工具使用等丰富内容,同时解答常见问题并提供实战案例。所有文章均附带详细链接,便于读者系统学习或针对性查阅。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4376

C语言函数作为函数参数

c,c++中是可以向Python那样将函数作为函数参数的,具体实现方法如下

qq_44733706的博客 3万+

RK3568平台YOLO11模型部署实战:从环境搭建、模型转换到板端性能优化全解析

摘要: 本文详细介绍了在RK3568平台上从零部署YOLO11模型的完整流程。主要内容包括:1) 基于Conda搭建Python 3.8开发环境并安装RKNN-Toolkit2工具链;2) 使用LabelImg工具标注数据并构建YOLO格式数据集;3) 基于Ultralytics框架进行YOLO11模型训练及参数优化;4) 实现PyTorch→ONNX→RKNN的完整模型转换链。文章特别针对RK3568平台的NPU特性提供了关键参数配置建议,并分享了实际开发中的经验总结,最终可达到30FPS的稳定推理性能。

LXY_LOVE36的博客 278

在 C 中定义函数 - 如何定义 C 中的函数

return 0;// 输出:让我们逐步分解这段代码。addmain()

晓风晓浪 1961

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

c函数大全_C函数

c函数大全 C函数 (Functions in C) A function is a block of code that performs a particular task. 函数是执行特定任务的代码块。 There are many situations where we might need to write same line of code for more than once ...

cunfen6312的博客 1005

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【C语言】了解函数,认识函数

IO函数字符串操作函数字符操作函数 内存操作函数时间/日期函数 数学函数 其他库函数以上就是常见的库函数,如果对于哪里的函数不了解,可以根据我上面的网站自行学习。自定义函数和库函数是一样的,本质定义差不多ret_type fun_name(形式参数)若函数有返回值,则要有返回值的类型,如int,double等等。若函数没有返回值,则函数名前要加void。函数的参数(形式参数),当然参数名前也要加上类型。最后是函数体,记得要用{括起来}例如:写一个减法函数int main()

欢迎来到我的博客,私信我可以一起交流技术 1508

【C语言】函数

文章摘要: 本文系统讲解了C语言函数的核心知识,包括函数的概念、组成要素和使用方法。重点介绍了库函数(如sqrt)和自定义函数的定义与调用,强调形参实参的区别及return语句的使用规范。通过加法函数等代码示例,展示了函数在代码复用和模块化设计中的优势。文章还提及数组作为函数参数的应用场景,帮助读者全面掌握C语言函数编程技巧。

2301_78257800的博客 1735

c语言——函数

库函数很重要但在c语言中更重要的是自定义函数,有了自定义函数我们才能写出不一样的代码,让我们更具有创造性。我们可以把函数想象成小型的⼀个加工厂,工厂得输入原材料,经过工厂加工才能生产出产品,那函数也是一样的,函数⼀般会输入一些值,这些值也就是参数(可以是0个,也可以是多个),经过函数内的计算,得出结果。在以上某年某月有多少天的程序中就实现了函数的定义与调用如果将自定义函数放在main函数后会发生什么呢?这时我们就会看到以下警告出现这种情况的原因是。

mljy.博客 1912

C语言:函数

仅仅是利用编译器提供给我们的头文件中的函数是远远不够我们利用来编写更高效的C程序的。人的头脑是有无限潜力的,我们可以想出很多可以由我们来定义的函数,编译器允许我们定义自定义函数。这样,就可以使我们的C程序的效率提高好几个档次。形式如下:ret_type fun_name(形式参数)代码;//ret_type是函数返回类型//fun_name是函数名//括号中放的是形式参数//{}括起来的是函数体我们可以把函数想象成小型的一个加工厂。工厂得输入原材料,经过工厂加工才能生产出产品。

2302_80177865的博客 1736

C语言函数之—函数的分类

库函数和自定义函数

qq_74009838的博客 4229

C 安全函数

C 安全函数是 C11 标准(Annex K)引入的一组函数,旨在增强 C 语言程序的安全性,特别是在处理字符串和内存操作时防止缓冲区溢出等问题。它们是传统函数的增强版本,通过要求传入缓冲区大小并返回错误码来提供更好的错误检测和处理。根据多个来源(如菜鸟教程 [[invalid url, do not cite]]和优快云 博客 [[invalid url, do not cite]]

likuoelie的博客 1215

【C语言函数】详解C语言函数,函数传参,递归函数,学习C语言函数这一篇够了

【C语言函数】详解C语言函数,函数传参,递归函数,学习C语言函数这一篇够了,希望这篇文章可以帮到大家。

程序员良辰 1981

C语言——函数详解

C语言函数详解

sinzz的博客 2493

函数c语言_C语言函数习题及答案

点击蓝字关注我们FOLLOW US1.这下面程序的正确运行结果是(C)。void fun(int s[],int n1,int n2){ int i,j,t; i=n1; j=n2; while (i { t=s[i];s[i]=s[j]; s[j]=t; i++;j--; }}int main(){int a[10]={1,...

weixin_42355387的博客 7441
上一篇: 数据和C——万字详解(C Primer Plus)
下一篇: 函数—C(下)
小白debug~
小白debug~ 新星创作者: C/C++技术领域 新星创作者: C/C++技术领域
博客等级 码龄4年 3510粉丝 128原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

小白debug~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值