C 语言函数

C 语言函数

在本教程中,将向您介绍C语言编程中的函数(用户定义函数和标准库函数)。此外,您还将学习为什么在编程中使用函数。

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

假设您需要创建程序来创建一个圆并为其着色。您可以创建两个函数来解决此问题:

  • 创建一个圆的函数
  • 创建颜色的函数

将复杂的问题分成较小的块可以使我们的程序易于理解和重用。

C 语言函数的优势

C函数具有以下优点。

  • 通过使用函数,我们可以避免在程序中一次又一次地重写相同的逻辑/代码。
  • 我们可以在程序中以及在程序的任何位置多次调用C函数。
  • 当大型C程序被划分为多个函数时,我们可以轻松地对其进行跟踪。
  • 可重用性是C函数的主要成就。
  • 但是,函数调用始终是C程序的开销。

函数包含哪些方面

C函数包含三个方面。

  • 函数声明 必须在C程序中全局声明函数,以告知编译器函数名称,函数参数和返回类型。
  • 函数调用 可以从程序中的任何位置调用函数。参数列表在函数调用和函数声明中要相同。我们必须传递与函数声明中声明的函数数量相同的函数。
  • 函数定义 它包含要执行的实际语句。这是调用函数时控件所涉及的最重要方面。在这里,我们必须注意,该函数只能返回一个值。
序号C函数方面语法
1函数声明return_type function_name(argument_list);
2函数调用function_name(argument_list)
3函数定义return_type function_name(argument_list){function body;}

使用C语言创建函数的语法如下:

示例

return_type function_name(data_type parameter...){
    //要执行的代码
}

函数类型

C语言编程中有两种类型的函数:

  1. [标准库函数]:在C头文件中声明的函数,例如scanf(),printf(),gets(),puts(),ceil(),floor()等。
  2. [用户定义的函数]:C程序员自定义的函数,我们可以多次使用它。它降低了大型程序的复杂性并优化了代码。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

返回值

C函数可能会也可能不会从该函数返回值。如果您不必从函数返回任何值,则将void用作返回类型。

让我们看一个简单的C函数示例,该函数不会从该函数返回任何值。

没有返回值的示例:

示例

void hello(){
    printf("hello c");
}

如果要从函数返回任何值,则需要使用任何数据类型,例如int,long,char等。返回类型取决于要从函数返回的值。

让我们看一个简单的C函数示例,该函数从该函数返回int值。

返回值示例:

示例

int get(){
    return 10;
}

在上面的示例中,我们必须返回10作为值,因此返回类型为int。如果要返回浮点值(例如10.2、3.1、54.5等),则需要使用float作为方法的返回类型。

示例

float get(){
    return 10.2;
}

现在,您需要调用该函数以获取该函数的值。

函数调用的不同方面

函数可以接受也可以不接受任何参数。它可能会或可能不会返回任何值。基于这些事实,函数调用有四个不同方面。

  • 没有参数且没有返回值的函数
  • 没有参数但有返回值的函数
  • 有参数且无返回值的函数
  • 带有参数和返回值的函数

不带参数和返回值的函数示例

实例1

示例

#include<stdio.h>
void printName();
void main ()
{
    printf("Hello ");
    printName();
}
void printName()
{
    printf("hello c");
}

输出结果

hello c

实例2

示例

#include<stdio.h>
void sum();
void main()
{
    printf("\n计算两个数的和:");
    sum();
}
void sum()
{
    int a,b; 
    printf("\n输入两个数字");
    scanf("%d %d",&a,&b); 
    printf("总和是 %d",a+b);
}

输出结果

计算两个数的和:

输入两个数字 10 
24 

总和是 34

不带参数返回值的函数示例

实例1

示例

#include<stdio.h>
int sum();
void main()
{
    int result; 
    printf("\n计算两个数的和:");
    result = sum();
    printf("%d",result);
}
int sum()
{
    int a,b; 
    printf("\n输入两个数字");
    scanf("%d %d",&a,&b);
    return a+b; 
}

输出结果

计算两个数的和:

输入两个数字 10 
24 

34

示例2:程序计算正方形的面积

示例

#include<stdio.h>
int sum();
void main()
{
    printf("计算这个正方形的面积\n");
    float area = square();
    printf("正方形的面积: %f\n",area);
}
int square()
{
    float side;
    printf("输入边长(以米为单位): ");
    scanf("%f",&side);
    return side * side;
}

输出结果

计算这个正方形的面积 
正方形的面积: 10 
输入边长(以米为单位): 100.000000

带参数且不带返回值的函数示例

实例1

示例

#include<stdio.h>
void sum(int, int);
void main()
{
    int a,b,result; 
    printf("\n计算两个数的和:");
    printf("\n输入两个数字:");
    scanf("%d %d",&a,&b);
    sum(a,b);
}
void sum(int a, int b)
{
	printf("\n总和是 %d",a+b);    
}

输出结果

计算两个数的和:

输入两个数字 10 
24 

总和是 34

示例2:程序计算五个数字的平均值。

示例

#include<stdio.h>
void average(int, int, int, int, int);
void main()
{
    int a,b,c,d,e; 
    printf("\n要计算五个数的平均值:");
    printf("\n输入五个数字:");
    scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
    average(a,b,c,d,e);
}
void average(int a, int b, int c, int d, int e)
{
	float avg; 
	avg = (a+b+c+d+e)/5; 
	printf("给定五个数字的平均值 : %f",avg);
}

输出结果

要计算五个数的平均值:
输入五个数字:10 
20
30
40
50
给定五个数字的平均值 : 30.000000

带参数和返回值的函数示例

实例1

示例

#include<stdio.h>
int sum(int, int);
void main()
{
    int a,b,result; 
    printf("\n计算两个数的和:");
    printf("\n输入两个数字:");
    scanf("%d %d",&a,&b);
    result = sum(a,b);
    printf("\n总和是 : %d",result);
}
int sum(int a, int b)
{
	return a+b;
}

输出结果

计算两个数的和:
输入两个数字:10
20 
总和是 : 30

示例2:检查数字是偶数还是奇数的程序

示例

#include<stdio.h>
int even_odd(int);
void main()
{
 int n,flag=0;
 printf("\n检查一个数字是偶数还是奇数");
 printf("\n输入数字: ");
 scanf("%d",&n);
 flag = even_odd(n);
 if(flag == 0)
 {
 	printf("\n数字是奇数");
 }
 else 
 {
 	printf("\n这个数是偶数");
 }
}
int even_odd(int n)
{
	if(n%2 == 0)
	{
		return 1;
	}
	else 
	{
		return 0;
	}
}

输出结果

检查一个数字是偶数还是奇数
输入数字: 100
这个数是偶数

C 标准库函数

标准库函数是C语言中的内置函数,它们被分组并放置在称为库的公共位置。这些函数用于执行某些特定操作。例如,printf是用于在控制台上打印的库函数。库函数由编译器的设计者创建。所有C标准库函数都在扩展名为**.h**的不同头文件中定义。我们需要在程序中包含这些头文件,以利用在此类头文件中定义的库函数。例如,要使用诸如printf / scanf之类的库函数,我们需要在程序中包含stdio.h,这是一个头文件,其中包含有关标准输入/输出的所有库函数。

下表列出了最常用的头文件。

序号头文件描述
1stdio.h这是一个标准的输入/输出头文件。它包含有关标准输入/输出的所有库函数。
2conio.h这是一个控制台输入/输出头文件。
3string.h它包含所有与字符串相关的库函数,例如gets(),puts()等。
4stdlib.h该头文件包含所有通用库函数,例如malloc(),calloc(),exit()等。
5math.h该头文件包含所有与数学运算相关的函数,例如sqrt(),pow()等。
6time.h该头文件包含所有与时间有关的函数。
7ctype.h该头文件包含所有字符处理函数。
8stdarg.h变量参数函数在此头文件中定义。
9signal.h所有信号处理函数都在此头文件中定义。
10setjmp.h该文件包含所有跳转函数。
11locale.h该文件包含语言环境函数。
12errno.h该文件包含错误处理函数。
13assert.h该文件包含诊断函数。

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

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

相关文章

Redis04-分布式锁

目录 Redis实现分布式锁 分布式锁的工作流程 Redis实现分布式锁 Redission的watch dog Redis分布式锁的合理应用 Redis实现分布式锁 在单节点的服务器中&#xff0c;java中的synchronized机制是处于JVM层面的&#xff0c;只能保证线程之间的同步。而实际的服务部署中&…

第90步 深度学习图像分割:U-Net建模

基于WIN10的64位系统演示 一、写在前面 从这一期开始&#xff0c;我们杀个回马枪&#xff0c;继续学习深度学习图像分割系列&#xff0c;以为4090上岗了。 图像分割是计算机视觉的一个重要任务&#xff0c;目的是将数字图像分割成多个部分或区域&#xff0c;这些部分通常对应…

goroutine调度模型 调度策略

文章目录 背景 协程线程与协程的对比线程&#xff08;Thread&#xff09;协程&#xff08;Coroutine&#xff09; 运作线程模型 goroutine调度模型与演进过程G-M模型G-P-M模型抢占式调度器其他优化 调度策略队列轮转系统调用工作量窃取抢占式调度GOMAXPROCS 对性能的影响 Go在语…

multilinear多项式承诺方案benchmark对比

1. 引言 前序博客有&#xff1a; Lasso、Jolt 以及 Lookup Singularity——Part 1Lasso、Jolt 以及 Lookup Singularity——Part 2深入了解LassoJolt Lasso lookup中&#xff0c;multilinear多项式承诺方案的高效性至关重要。 本文重点关注4种multilinear多项式承诺方案的实…

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

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

Springboot+vue的毕业生实习与就业管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的毕业生实习与就业管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点…

logback异步日志打印阻塞工作线程

前言 最新做项目&#xff0c;发现一些历史遗留问题&#xff0c;典型的是日志打印的配置问题&#xff0c;其实都是些简单问题&#xff0c;但是往往简单问题引起严重的事故&#xff0c;比如日志打印阻塞工作线程&#xff0c;以logback和log4j2为例。logback实际上是springboot的…

Smart Link 和 Monitor Link应用

定义 Smart Link常用于双上行链路组网&#xff0c;提高接入的可靠性。 Monitor Link通过监视上行接口&#xff0c;使下行接口同步上行接口状态&#xff0c;起到传递故障信息的作用。 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个…

2016年408计网

这一年&#xff0c;计算机网络部分的全部考题都围绕该网络拓扑图进行。 第33题 在 OSI 参考模型中, R1、Switch、Hub 实现的最高功能层分别是() A. 2、2、1 B. 2、2、2 C. 3、2、1 D. 3、2、2 本题考察路由器、以太网交换机、集线器各自实现的最高功能层是什么题目给定R1是…

链表OJ题【环形链表】(3)

目录 环形问题的思考 ❓Q1 ❓Q2 &#x1f642;Q2 ❓Q3 ❓Q4 8.环形链表 9.环形链表Ⅱ 今天接着链表的经典问题环形问题。大家一定要自己动手多写写。&#x1f642; 快慢指针&#xff08;保持相对距离/保持相对速度&#xff09;野指针考虑为NULL的情况带环链表&#x…

Java14新增特性

前言 前面的文章&#xff0c;我们对Java9、Java10、Java11、Java12 、Java13的特性进行了介绍&#xff0c;对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 今天我们来一起看一下Java14这个版本的一些重要信息 版本介绍 Java 14…

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

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

【图像处理:OpenCV-Python基础操作】

【图像处理&#xff1a;OpenCV-Python基础操作】 1 读取图像2 显示图像3 保存图像4 图像二值化、灰度图、彩色图&#xff0c;像素替换5 通道处理&#xff08;通道拆分、合并&#xff09;6 调整尺寸大小7 提取感兴趣区域、掩膜8 乘法、逻辑运算9 HSV色彩空间&#xff0c;获取特定…

【算法每日一练]-单调队列,滑动窗口(保姆级教程 篇1) #滑动窗口 #求m区间的最小值 #理想的正方形 #切蛋糕

今天讲单调队列 目录 题目&#xff1a;滑动窗口 思路&#xff1a; 题目&#xff1a;求m区间的最小值​ 思路&#xff1a; 题目&#xff1a;理想的正方形 思路&#xff1a; 题目&#xff1a;切蛋糕 思路&#xff1a; 一共两种类型&#xff1a;一种是区间中的最值&…

游戏制作:猜数字(1~100),不会也可以先试着玩玩

目录 1 2代码如下&#xff1a;可以试着先玩玩 3运行结果&#xff1a;嘿嘿嘿 4程序分析&#xff1a;想学的看 5总结&#xff1a; 1 猜数范围为1~100&#xff0c;猜大输出猜大了&#xff0c;猜小输出猜小了&#xff0c;游戏可以无限玩。 首先先做一个简单的菜单界面&#xf…

RK3588平台 WIFI的基本概念

一.安卓WIFI框架 Android WIFI系统引入了wpa_supplicant&#xff0c;它的整个WIFI系统以wpa_supplicant为核心来定义上层接口和下层驱动接口。Android WIFI主要分为六大层&#xff0c;分别是WiFi Settings层&#xff0c;Wifi Framework层&#xff0c;Wifi JNI 层&#xff0c; W…

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

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

Torch Hub 系列#2:VGG 和 ResNet

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

自动泊车轨迹规划学习

1.基于6次多项式的自动泊车轨迹算法研究 针对常见的自动泊车系统无法躲避障碍物&#xff0c;以及轨迹的曲率不连续等问题进行了泊车轨迹算法的研究以及跟踪算法的设计。 针对低速自动泊车场景进行分析&#xff0c;建立符合对应场景下的车辆运动学模型以及能够泊车的最小车位大…

华为dns mapping配置案例

解决内网PC用公网的dns用域名方法访问公司内网的web服务器&#xff1a; 原理是用DNS mapping方式解决 配置过程&#xff1a;域名——出口公网IP地址——公网端口——协议类型 公司内网client用户填公网dns&#xff0c; 公网上的dns上面已注册有公司对外映射的web服务器的公网…