14.函数的使用

news2024/12/22 18:45:10

函数的概念

函数是c语言的功能单位,实现一个功能可以封装成一个函数来实现。
定义函数的时候一切以功能为目的,根据功能去定函数的参数和返回值。

函数的分类

1.从定义角度分类(即函数是谁实现的)

库函数(c库实现的)
自定义函数(程序员自己实现的函数)
系统调用(操作系统实现的函数)

2.从参数角度分类

2.1有参函数

函数有形参,可以是一个,或者多个,参数类型随便
完全取决于函数的功能

int fun(int a,float b,double c)
{
}

int max(int x,int y)
{
}

2.2 无参函数

函数没有参数,在形参列表的位置写void或什么都不写

int fun(void)
{
}

int fun()
{
}

3.从返回值的角度分类

3.1 带返回值的函数

在定义函数的时候,必须带着返回值类型,在函数体里,必须有return
如果没有返回值类型,默认返回整型。

char fun() //定义了一个返回字符数据的函数
{
char b = ‘a’;
return b;
}
fun()
{
return 1;
}

注:在定义函数的时候,函数的返回值类型取决于函数的功能。

3.2 没返回值的函数

在定义函数的时候,函数名字前面加void

void fun(形参表)
{
return ;
}

如果想结束函数,返回被调用的地方,使用return ;

#include<stdio.h>
int max(int x, int y)
{
	int z;
	if (x > y) {
		z = x;
	}
	else {
		z = y;
	}
	return z;
}
void help(void)
{
	printf("***********************\n");
	printf("打印帮助信息\n");
	printf("***********************\n");

}
int main()
{
	int num;
	help();
	num = max(5, 10);
	printf("num=%d\n", num);
	return 0;
}

在这里插入图片描述

函数的定义

1.函数定义的方法

返回值类型 函数名字(形参列表)
{
//函数体,函数的功能在函数体里实现
}

int max(int x,int y)
{
int z;
if(x>y)
z=x;
else
z=y;
return z;
}

注:形参必须带类型,以逗号分隔
函数的定义不能嵌套,即不能在一个函数体内定义另外一个函数。
所有函数的定义是平行的。

void fun(void)
{
;
;
void fun2(void) //错误,不能在fun函数体内再定义fun2函数。
{
;
}
}

注:在一个程序中,函数只能定义一次。

函数的声明

1.概念

对已定义的函数,进行说明。
函数的声明可以声明多次。

2.为什么要声明

有些情况下,如果不对函数进行声明,编译器在编译的时候,可能不认识这个函数。
因为编译器在编译c程序的时候,从上往下进行编译。

3.声明的方法

什么时候需要声明

1)主调函数和被调函数在同一个.c文件中的时候

被调函数在上,主调函数在下,这种情况不需要声明。

void fun(void)
{
printf(“hello word\n”);
}

int main()
{
fun();
}

被调函数在下,主调函数在上,编译器从上往下编译,在main函数(主调函数),不认识fun,需要声明

int main()
{
fun();
}

void fun(void)
{
printf(“hello word\n”);
}

3.1直接声明法

将被调用的函数第一行拷贝过去,后面加分号

#include<stdio.h>
void fun(void);
int main()
{
	fun();
	return 0;
}
void fun(void)
{
	printf("hello world!\n");
}

3.2 间接声明法

将函数的声明放在头文件中,.c程序包含头文件即可。
在这里插入图片描述
在这里插入图片描述
31.c的内容

#include<stdio.h>
#include"1.h"
int main()
{
	fun();
	return 0;
}
void fun(void)
{
	printf("hello world!\n");
}

1.h的内容:

extern void fun(void);
2)主调函数和被调函数不再同一个.c文件中的时候

一定要声明
直接声明法:
将被调用的函数的第一行拷贝过去,后面加分号,前面加extern
间接声明法:
将函数的声明放在头文件中,.c程序包含头文件即可

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

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

相关文章

Fedora怎么设置主菜单快捷键? Fedora快捷键的设置方法

Fedora主菜单可以设置打开快捷键&#xff0c;该怎么设置呢&#xff1f;下面我们就来看看Fedora快捷键的操作方法。 同时按【ALTF2】&#xff0c;输入gnome-terminal&#xff0c;打开终端。 单击右上角的主菜单按钮。 单击【配置文件首选项】。 单击【快捷键】。 单击【显示主菜…

使用DIV+CSS进行网页布局设计【HTML节日介绍网站——二十四节气】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【linux】进程概念

文章目录前言进程状态一、普遍的操作系统1、运行状态2、阻塞状态小结&#xff08;重要知识点&#xff09;3、新建/就绪状态4、挂起状态小结二、linux操作系统Linux内核源代码1、运行状态&#xff08;R&#xff09;2、&#xff08;浅度&#xff09;睡眠状态&#xff08;S&#x…

HTML CSS JS 网页设计作业「我的家乡吉林」

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

HTML小游戏12 —— 汽车赛道飙车游戏(附完整源码)

&#x1f482; 网站推荐:【神级源码资源网】【摸鱼小游戏】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且实用的计…

【WSL】【Opencv】【C++】在windows中使用WSL开发C++程序的环境搭建

文章目录基本环境Ubuntu安装Opencv从源码安装opencv-4.x从源码安装opencv-3.x直接pkg包安装CLion工程cmake文件写法demo基本环境 &#xff08;1&#xff09;安装WSL&#xff1b; &#xff08;2&#xff09;安装cmake&#xff1a; wget https://github.com/Kitware/CMake/rele…

作为运维你还在想要不要学Python?听听运维老司机怎么说

概述 今天闲聊下为什么我比较建议运维人员去学python… 建议运维一定要会开发 &#xff08;文末送读者福利&#xff09; 现阶段&#xff0c;掌握一门开发语言已经成为高级运维工程师的必备技能&#xff0c;不会开发&#xff0c;你就不能充分理解你们系统的业务流程&#xff…

SpringSecurity(十六)---OAuth2的运行机制(中)-密码、客户端凭据授权类型以及刷新令牌

一、前言 本篇将讨论剩余的授权类型以及使用刷新令牌重新获得令牌等内容&#xff0c;仍然以概念为主。下一节我们将通过一个SSO实例让大家对授权码授权类型更加熟悉。 二、实现密码授权类型 此授权类型也被称为资源所有者凭据授权类型。使用此流程的应用程序会假定客户端收集…

Spark 3.0 - 6.ML 自定义 Transformer 踩坑大全

目录 一.新征程开始 - 道阻且长 二.从源码入手 - 一探究竟 1.Tokenizer 2.UnaryTransformer 三.取源码精髓 - 照猫画虎 四.从实际出发 - 小试牛刀 五.扫重重障碍 - 补阙挂漏 1.Task not serializable 2.jsonEncode only supports string 3.Invisibility Error 4.Non…

补充(三)完善保密性三种定义的通俗表述及等价性的证明

目录 DEFINITION 2.3 完美保密加密方案的定义 LEMMA 2.5 完美保密方案的等价定义(一) LEMMA 2.7 完美保密方案的等价定义(二) 三个等价定义的通俗描述 等价性的证明&#xff08;手写过程&#xff09; DEFINITION 2.3 完美保密加密方案的定义 一个在明文空间M上的加密方案…

web前端期末大作业 html+css家乡旅游主题网页设计 湖北武汉家乡介绍网页设计实例

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

外卖项目05---套餐管理业务开发

套餐&#xff1a;一组菜品的集合 点击之后就会弹出下面的界面&#xff1a; 上面是后台的管理操作&#xff0c;下面是处理完成后在用户端展示的界面效果&#xff1a; 目录 一、新增套餐 70 1.1需求分析 70 1.2数据模型 70 ​编辑1.3新增套餐---代码开发---准备工作&梳理…

vtk.js滚动切片

关于滚动切片&#xff0c;官方有一个很好的例子,如下图&#xff1a; 关键代码 const mapper vtkImageMapper.newInstance(); mapper.setInputConnection(rtSource.getOutputPort()); mapper.setSliceAtFocalPoint(true);//这一行切片的光照焦点必须要设置为true&#xff0c;否…

CSDN周赛第十期总结

文章目录竞赛概述题解熊孩子摆拜访问题目描述数据范围样例输入样例输出代码走楼梯题目描述输入描述输出描述样例输入 1样例输出 1代码括号上色输入描述&#xff1a;输出描述&#xff1a;输入样例&#xff1a;输出样例&#xff1a;代码喜水青蛙题目描述输入描述&#xff1a;输出…

spark3.0.2搭建教程

spark3.0.2搭建教程 spark3.0.2安装教程 文章目录spark3.0.2安装教程一、前期准备二、spark搭建&#xff08;一&#xff09;搭建1、将spark上传到虚拟机上2、解压安装包&#xff08;二&#xff09;、standalone&#xff08;独立部署&#xff09;模型1、修改配置文件&#xff0…

学生HTML静态网页基础水平制作DIV+CSS+JavaScript技术制作美食网页——美食城6页面

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

高等数学(第七版)同济大学 习题10-2(前10题) 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-2&#xff08;前10题&#xff09; 函数作图软件&#xff1a;Mathematica 1.计算下列二重积分:\begin{aligned}&1. \ 计算下列二重积分:&\end{aligned}​1. 计算下列二重积分:​​ (1)∬D(x2y2)dσ&#xff0c;…

【构建ML驱动的应用程序】第 7 章 :使用分类器编写推荐

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

动态内存管理❀C

目录❀动态内存管理的意义❀动态内存管理函数malloc - 申请空间free - 释放空间calloc - 申请空间realloc - 调整空间大小❀常见的动态内存错误对NULL指针的解引用操作 - err对动态开辟空间的越界访问 - err对非动态开辟内存使用free释放 - err使用free释放一块动态开辟内存的一…

Pycharm安装配置Pyside6

PySide6是在Python环境下的一套Qt6 API库。使用PySide6可以轻松创建基于Qt6的GUI程序&#xff1b;PySide6由Qt官方维护。 1. Pyside6的安装&#xff1a; 直接安装在原python上面&#xff0c;在cmd里运行&#xff1a;(网速慢使用阿里源源) pip3 install Pyside6 -i https://p…