IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言 初识函数 函数的定义、分类、参数、调用,返回语句,作用域、局部变量和全局变量 -> 正文阅读

[C++知识库]C语言 初识函数 函数的定义、分类、参数、调用,返回语句,作用域、局部变量和全局变量

目录

一、初识函数

?我们为什么要用函数

二、函数的定义

`定义的形式

定义与声明

三、返回语句

无返回值函数

返回值

四、函数的参数

五、函数的调用

六、作用域、内部函数和外部函数


一、初识函数

? ? ? ?提到函数,首先想到的一定是数学里的函数(滑稽),但是在C语言中,函数是构成C语言程序的基本单元。


? ? ? ?每个C语言程序的入口和出口都位于main()函数之中。往往一个程序都分成若干个模块,每个模块往往有若干函数,每个模块完成一部分功能,main()函数能够调用其他函数,而其他函数之间也能相互调用。


?我们为什么要用函数

当我们需要求三组不同数值的和,在没有函数的情况下是这样的

#include<stdio.h>
int main(void) {
	int number_1;
	int number_2;

	printf("请输入你的余额,(type int,space):\n");
	scanf_s("%d %d", &number_1, &number_2);
	printf("余额 = %d\n", number_1 + number_2);

	printf("请输入你的体重,(type int,space):\n");
	scanf_s("%d %d", &number_1, &number_2);
	printf("体重 = %d\n", number_1 + number_2);

	printf("请输入你的智商,(type int,space):\n");
	scanf_s("%d %d", &number_1, &number_2);
	printf("智商 = %d\n", number_1 + number_2);

	return 0;
}

?但是这个程序看起来是十分冗杂的,三串几乎相同的的代码,那我们要如何让它变得简洁呢?

——函数!!

当我们用函数来解决这个问题时,程序就变得十分简洁?

#include<stdio.h> 
int add(int number_1,int number_2);

int main(void) {
	int a, b, c, d, e, f, sum_1, sum_2, sum_3;
	scanf_s("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);
	sum_1 = add(a, b);
	sum_2 = add(c, d);
	sum_3 = add(e, f);
	printf("余额=%d\n 体重=%d\n 智商=%d\n", sum_1,sum_2,sum_3);
                                        
}
int add(int number_1, int number_2) {
	int answer;
	answer = number_1 + number_2;
	return(answer);
}

(虽然看起来并不短,但是如果要求的量更多,用函数的优势就能更好地体现出来了!!!)?

二、函数的定义

? ? ? 函数的定义是让编译器知道函数的功能,定义的函数包括函数头函数体


`定义的形式

1.函数头

用来标识函数的开始,函数的入口,顾名思义就是函数的头。

函数头又分成返回值类型函数名参数列表


2.函数体

函数体顾名思义就在函数头的下面,由一个大括号括起来,大括号决定了函数体的范围。

函数的功能都是在函数体完成的。


定义与声明

在程序中编写函数时,首先要声明函数,再进行定义。

函数的声明就是让编译器知道函数的名称、参数、返回值类型等信息。就像请假一样,向老师说一声,老师才知道你为什么不来。

int ShowNumber(int iNumber)
//返回值类型   函数名(参数列表)

注意:如果将函数的定义放在调用函数之前,就不需要进行函数的声明,此时函数的定义就包含了函数的声明。


三、返回语句

?就像是上级给下级任务,下级完成后上报给上级。

return 0;//这就是返回语句

·利用返回语句能立即从所在函数中退出,返回调用的函数中。

·将返回值赋给调用的表达式。(也有些程序没有返回值,例如void函数)


无返回值函数

终止函数执行有两种办法:从第一句一直执行到最后一句,然后遇到“}”后返回;在就是用return返回。而下面要说的无返回值函数就是用的第一种方法(不然没法返回了😄

void post();
void post
{
printf("你");
printf("好");
}

在运行完四五行后遇到第六行的“}”后就返回了。


返回值

我最开始举的函数的例子就是有返回值的函数,就这这个

?
#include<stdio.h> 
int add(int number_1,int number_2);

int main(void) {
	int a, b, c, d, e, f, sum_1, sum_2, sum_3;
	scanf_s("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);
	sum_1 = add(a, b);
	sum_2 = add(c, d);
	sum_3 = add(e, f);
	printf("余额=%d\n 体重=%d\n 智商=%d\n", sum_1,sum_2,sum_3);
                                        
}
int add(int number_1, int number_2) {
	int answer;
	answer = number_1 + number_2;
	return(answer);
}

?

首先定义了一个进行加法的函数add(),然后在main()函数中通过调用add()函数将计算的结果赋给在main()函数中定义的变量sum_1,sum_2,sum_3。

意思就是在main()函数中输入a,b,c,d,e,f,然后转入add()函数中计算,将计算得出来的answer返回到main()函数中。

函数的返回值类型:函数定义的返回值决定最终返回值的类型。


四、函数的参数

?参数包括形式参数和实际参数

int add(int number_1,int number_2);//number_1和number_2是形式参数

int add(int number_1, int number_2) {
	int answer;
	answer = number_1 + number_2;
	return(answer);//answer是实际参数
}

当这个函数被调用时,传递给函数的两个值就会被复制到number_1,number_2中,这就是形式参数。

这个函数在运行后要返回给原函数的那个参数,就是实际参数。


五、函数的调用

?我们要使用这个函数,就需要调用它。

而调用就可以分成:函数语句调用,函数表达式调用函数参数调用

我再用这个程序举例子(滑稽

?
?
#include<stdio.h> 
int add(int number_1,int number_2);

int main(void) {
	int a, b, c, d, e, f, sum_1, sum_2, sum_3;
	scanf_s("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);
	sum_1 = add(a, b);//从这开始调用函数
	sum_2 = add(c, d);//从这开始调用函数
	sum_3 = add(e, f);//从这开始调用函数
	printf("余额=%d\n 体重=%d\n 智商=%d\n", sum_1,sum_2,sum_3);
                                        
}
int add(int number_1, int number_2) {
	int answer;
	answer = number_1 + number_2;
	return(answer);
}

?

?

?调用后就分别把三组数传递给函数,作为number_1和number_2来计算,最后得到answer后返回主函数。


六、作用域、内部函数和外部函数

#include<stdio.h>
void sum(int animals);//声明函数
void gap(int babys);
int dog = 100;//外部函数

int main(void) {
	int cat = 50;
	printf("dog = %d\n", dog);
	printf("cat = %d\n", cat);//在这里不能输出wolf的值,因为wolf是在sum()函数中定义的
	sum(1);//随便取一个值,因为我在这里的目的是调用sum()函数
	gap(1);//同理
}
void sum(int animals) {
	int wolf = 80;
	printf("dog = %d\n", dog);
	printf("wolf = %d\n", wolf);//在这里不能输出cat的值,因为cat是在main()函数中定义的
}
void gap(int babys) {
	int dog = 18;//外部函数在其他函数中若是重新定义,是可以改变的
	printf("dog = %d\n", dog);
}

内部函数的作用域只在本函数中外部函数的作用域在全局,并且若是外部函数没有在其他函数中被重新定义,则外部函数的值一直保持不变,但是外部函数可以被污染!!!

函数的学习就到这里,拜拜ヾ(?ω?`)o

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:51:43  更:2022-09-04 00:54:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:03:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码