C 用户定义函数

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);

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

459. 重复的子字符串

459. 重复的子字符串 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;__459重复的子字符串_枚举__459重复的子字符串_字符串匹配__459重复的子字符串_KMP算法__459重复的子字符串_优化的KMP算法 错误经验吸取 原题链接&#xff1a; 459. …

【Mybatis小白从0到90%精讲】16: Mybatis like语句四种传参方式

文章目录 前言方式一:Java代码拼接方式二:MySQL CONCAT函数方式三:Mybatis bind标签方式四:SQL拼接前言 在实际开发中,SQL中使用 模糊查询like使用非常普遍,在MyBatis中,为了防止SQL注入攻击,可以使用#{}来传递参数,切记like语句不要使用${}的方式! 这里我总结了 四…

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

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

(离散数学)逻辑连接词

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

计算机课设python项目matplotlib数据可视化分析代码以及数据文档+自动化selenium实现boss网站爬虫代码

这是一个数据分析可视化课程的结课作业设计&#xff0c;受人所托写的&#xff0c;现在分享出来&#xff0c;有需要的同学自取哈&#xff0c;以下是文件目录&#xff0c;包括数据分析和爬虫代码都有&#xff0c;下载下来当一个demo也还是不错的&#xff0c;这篇博客就是文档里的…

灰度与二值化

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

c++ 模拟进制之间的转换

c 模拟进制之间的转换 废话少说&#xff0c;直接上图 效果图 短除法 思想 过程 1 十进制 转 二进制 > 短除法 2 十进制 转 八进制 > 短除法 3 十进制 转 十六进制 > 短除法4 二进制 转 十进制 5 二进制 转 八进制 可以先将 二进制 转成 十进制&#xff0c;然…

Java继承和多态(1)

&#x1f435;本主题将分为篇文章&#xff0c;本篇文章将主要对继承进行讲解 一、介绍继承 1.1 什么是继承 假如有两个类&#xff1a;A类和B类&#xff0c;A类在保持原有成员变量和方法的基础上可以使用B类的成员变量和方法&#xff0c;此时就称A类继承了B类&#xff0c;A类为…

微信公众号历史文章采集教程思路

大家好&#xff0c;我是淘小白&#xff01; 今天来说下微信公众号历史记录文章采集的教程和思路&#xff0c;希望能够帮助的到大家~ 1、历史消息入口 现在新版本的微信已经找不到历史记录的入口了&#xff0c;需要对这个入口进行拼接&#xff0c;方法如下&#xff1a; 随便…

适用于初学者的 .NET MAUI

适用于初学者的 .NET MAUI | Microsoft Learn 记录微软Learn中用到的代码。文章比较粗糙&#xff0c;大部分是项目代码粘贴。想详细学习的可到上面的链接学习&#xff0c;代码可以从这里复制后直接运行。 练习中一共有两个页面&#xff1a; 1、MainPage.xaml 用于添加列表中的…

【Python】Matplotlib-多张图像的显示

一&#xff0c;情景描述 大家在写论文或者实验报告的时候&#xff0c;经常会放多张图片或数据图像在一起形成对比。比如&#xff0c;我现在有一张经过椒盐噪声处理的图像&#xff0c;现在进行三种滤波&#xff0c;分别是均值&#xff0c;高斯&#xff0c;中值滤波&#xff0c;…

3.HTML中语法规范

3. HTML语法规范 3.1 基本语法概述 3.1.1 HTML标签 1 HTML 标签是由尖括号包围的关键字&#xff0c;例如<html>。 2. HTML 标签通常是成对出现的&#xff0c;例如<html>和</html>,我们称为双标签。标签对中的第一个标签是开始标签&#xff0c;第二个标签是…

74hc595模块参考

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

Leetcode—107.二叉树的层序遍历II【中等】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—107.二叉树的层序遍历II 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullpt…

【Delphi】 各个平台使用 ntfy 效果说明

目录 一、Delphi 中使用 ntfy 库下载地址 二、各个平台使用效果说明 1. android 平台 2. ios 平台 3. windows 平台 三、总结 一、Delphi 中使用 ntfy 库下载地址 官方的文档地址&#xff1a;ntfyDelphi 接口库地址&#xff1a;GitHub - hazzelnuts/ntfy-for-delphi at …

DevChat全能型AI编程助手,助你“以一敌三卷翻好友”

DevChat全能型AI编程助手&#xff0c;助你“以一敌三卷翻好友” 什么是DevChat&#xff0c;它能帮助我们做什么&#xff1f; DevChat是OpenAI的一个产品&#xff0c;它是一个可以进行编程相关对话的AI。这意味着你可以使用它来解决一些编程上的问题或者获取关于编程的建议。 …

Radius是什么意思? 安当加密

Radius是什么意思&#xff1f; RADIUS&#xff08;Remote Authentication Dial In User Service&#xff09;是一种远程用户拨号认证系统&#xff0c;它由RFC 2865和RFC 2866定义&#xff0c;是应用最广泛的AAA&#xff08;Authentication、Authorization、Accounting&#xf…

MySQL中外键的使用及外键约束策略

一、外键约束的概念 外键约束&#xff08;FOREIGN KEY,缩写FK是数据库设计的一个概念&#xff0c;它确保在两个表之间的关系保持数据的一致性和完整性。 外键是指表中的某个字段的依赖于另一张表中某个字段的值&#xff0c;而被依赖的字段必须具有主键约束或者唯一约束&#…

[vuex] unknown mutation type: SET_SOURCE

项目中使用了vuex&#xff0c;并且以模块的形式分好之后。在调用的时候出现了以上问题 /*当我们commit的时候要注意要加上模块的名字 user是模块名称&#xff0c;SET_SOURCE是user模块中定义的方法 正确写法&#xff1a;*/ this.$store.commit("user/SET_SOURCE", th…

linux之IPC

linux之IPC 什么是IPC共享内存(shm)ftokshmgetshmatshmdtshmctl 消息队列msggetmsgrcvmsgsndmsgctl 旗语(信号量)semgetsemctlsemopsem三级标题三级标题 ipc命令守护进程查看守护进程 什么是IPC IPC: Inter(内核) Process(进程) Communicton&#xff08;通信&#xff09; 共享内…