C 用户定义函数

news2024/12/23 12:13:48

C 用户定义函数

在本教程中,您将借助示例学习在C语言编程中创建用户定义的函数。

函数是执行特定任务的代码块。

C允许您根据需要定义函数。这些函数称为用户定义函数。例如:

假设您需要创建一个圆并根据半径和颜色为其着色。您可以创建两个函数来解决此问题:

  • createCircle() 函数
  • color() 函数

示例:用户定义的函数

这是添加两个整数的示例。为了执行此任务,我们创建了一个用户定义的addNumbers()。

示例

#include <stdio.h>
int addNumbers(int a, int b);         //函数原型

int main()
{
    int n1,n2,sum;

    printf("输入两个数字: ");
    scanf("%d %d",&n1,&n2);

    sum = addNumbers(n1, n2);        // 函数调用
    printf("sum = %d",sum);

    return 0;
}

int addNumbers(int a, int b)         //函数定义
{
    int result;
    result = a+b;
    return result;                  //返回语句
}

函数原型

函数原型只是函数的声明,用于指定函数的名称,参数和返回类型。它不包含函数体。

函数原型向编译器提供信息,该函数以后可以在程序中使用。

函数原型的语法

returnType functionName(type1 argument1, type2 argument2, ...);

在上面的示例中,函数原型int addNumbers(int a, int b);为编译器提供了以下信息:

  1. 函数的名称是 addNumbers()
  2. 函数的返回类型是 int
  3. 类型的两个参数int传递给函数

如果在main()函数之前定义了用户定义的函数,则不需要函数原型。

调用函数

程序的控制权通过调用转移到用户定义的函数。

函数调用的语法

functionName(argument1, argument2, ...);

在上面的示例中,使用main()函数内部的语句进行函数addNumbers(n1, n2);调用。

函数定义

函数定义包含执行特定任务的代码块。在我们的示例中,将两个数字相加并返回。

函数定义的语法

returnType functionName(type1 argument1, type2 argument2, ...)
{
    //函数体
}

调用函数时,程序的控制权将转移到函数定义中。并且,编译器开始在函数体内执行代码。

将参数传递给函数

在编程中,参数是指传递给函数的变量。在上面的示例中,在函数调用期间传递了两个变量n1和n2。

参数a和b接受函数定义中传递的参数。这些参数称为函数的形式参数。
在这里插入图片描述

传递给函数的参数类型和形式参数必须匹配,否则,编译器将引发错误。

如果n1是char类型,a也应该是char类型。如果n2为浮点型,则变量b也应为浮点型。

也可以在不传递参数的情况下调用函数。

return 语句

return语句终止函数的执行并将值返回给调用函数。返回语句之后,程序控制权将转移到调用函数。
在这里插入图片描述

在上面的示例中,result变量的值返回到主函数。main()函数中的sum变量被分配了该值。

return语句的语法

return (expression);

例如,

return a;
return (a+b);

从函数返回的值的类型与函数原型和函数定义中指定的返回类型必须匹配。

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

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

相关文章

No182.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

C语言数据结构-----双向链表增删查改的代码实现

文章目录 1.初始化双链表2.创建链表节点3.打印链表4.尾插5.尾删6.头插7.头删8.在pos之前插入8.1 在pos之前插入(改造头插)8.2 在pos之前插入(改造尾插) 9.删除pos位置9.1 删除pos位置(改造尾删)9.1 删除pos位置(改造头删) 10.查找11.毁灭 链接: 顺序表(动态顺序表增删查改的代码…

基于SSM的微博网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Python基础入门例程54-NP54 被5整除的数字(循环语句)

最近的博文&#xff1a; Python基础入门例程53-NP53 前10个偶数(循环语句)-CSDN博客 Python基础入门例程52-NP52 累加数与平均值(循环语句)-CSDN博客 Python基础入门例程51-NP51 列表的最大与最小(循环语句)-CSDN博客 目录 最近的博文&#xff1a; 描述 输入描述&#xf…

Redis 5大数据类型命令解读

目录 Redis key的命令 Redis 10大数据类型 1、redis字符串&#xff08;String&#xff09; 2、redis列表(List) 3、redis哈希表(Hash) 4、redis集合(Set) 5、redis有序集合(ZSet) Redis 命令网站&#xff1a;redis中文文档 Redis key的命令 命令说明示例keys *查看当…

人工智能基础——图像认知与OpenCV

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

【Python基础】try-finally语句和with语句

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

灰度与二值化

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

No180.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

统计学_蒙特卡罗方法

1、蒙特卡罗方法的基本思想 蒙特卡罗方法(Monte Carlo method)是由冯诺依曼和乌拉姆等人发明的&#xff0c;“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场&#xff0c;这个方法是一类基于概率的方法的统称&#xff0c;不是特指一种方法。 蒙特卡罗方法也成统计模拟方法&am…

【彻底搞懂C指针 】Malloc 和 Free 的具体实现 (笔记)

【彻底搞懂C指针】Malloc 和 Free 的具体实现 https://danluu.com/malloc-tutorial/ 进程间的通信 : ①共享内存 ② 消息传递 &#xff08;内核实现&#xff09; 分配策略 (实现方面) by DUCK sbrk() malocal实现的主要函数 man sbrk 查看 数据结构 一个参考代码 https…

软件架构的可维护性指标——代码圈复杂度

代码圈复杂度 1、目的2、前言3、简介4、案例5、降低6、插件7、总结 1、目的 区别于常规的高内聚、低耦合、抽象、封装这种定性的指标&#xff0c;我想通过对软件架构可维护性的可量化的指标的分享&#xff0c;帮助大家在日常的开发工作中&#xff0c;有一个更为广阔的视角去审…

No181.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

共享内存原理和实现

实现原理 实现函数 1&#xff0c;ftok--shmget--shmat--shmdt shmget用于分配映射物理内存的虚拟内存。 怎么保证不同进程访问同一块物理内存呢 key_t ftok(const char *pathname, int proj_id); ftok的第一个参数是一个文件&#xff0c;只要使用同一个文件进行映射&#x…

STM32F4之看门狗

1、 看门狗作用 单片机复位的方式&#xff1a;硬件复位 -- reset按键 上电复位 -- 电容 看门狗复位 看门狗的复位功能主要是用于一些平常难以操作的场合去帮助我们进行复位操作。当你单片机突然死机或者程序跑飞了&#xff0c;看门狗就可以检测得到并且及时帮你复位。看门狗也可…

74hc595模块参考

74hc595模块参考 8位串行并行输出&#xff08;SIPO&#xff09;移位寄存器 使用74HC595移位寄存器扩展微控制器上的输出引脚数量。如果你需要扩充输入引脚的数量那么你需要74HC165移位寄存器。 SER&#xff08;串行输入&#xff09;引脚用于一次一位地将数据发送到移位寄存器…

(离散数学)逻辑连接词

异或可以理解为不同为1相同为0 P->Q的前件和后件满足0->1的其中一个就为真 <—>可以看做 &#xff0c;相同为1不同为0 异或与等价相反

Torch Hub 系列#2:VGG 和 ResNet

一、说明 在上一篇教程中,我们了解了 Torch Hub 背后的本质及其概念。然后,我们使用 Torch Hub 的复杂性发布了我们的模型,并通过相同的方式访问它。但是,当我们的工作要求我们利用 Torch Hub 上提供的众多全能模型之一时,会发生什么? 在本教程中,我们将学习如何利用称为…

MySQL:日志系统

目录 概述错误日志&#xff08;error log&#xff09;慢查询日志&#xff08;slow query log&#xff09;一般查询日志( general log )中继日志&#xff08;relay log&#xff09;Buffer Pool 缓存回滚日志&#xff08;undo log)概述undo log 作用undo log 的存储机制Undo log …

WorkPlus Meet:局域网内部使用的高效视频会议系统

随着全球化和远程办公的趋势&#xff0c;视频会议已成为现代企业和机构不可或缺的沟通工具。而现在&#xff0c;大多数政企单位或者涉密强的企业&#xff0c;都会使用局域网部署的音视频会议系统&#xff0c;提供更高的安全性和隐私保护。因为音视频会议中可能涉及到公司机密和…