【C++程序设计】——利用函数实现指定功能(一)

削好皮的Pineapple! 2024-08-20 13:35:02 阅读 63

在这里插入图片描述


👨‍💻个人主页:@开发者-削好皮的Pineapple!

👨‍💻 hello 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 削好皮的Pineapple! 原创

👨‍💻 收录于专栏:C++程序设计


请添加图片描述

请添加图片描述

文章目录

⭐作者想说⭐⭐前言⭐🎶一、什么是函数🎶二、定义函数的一般形式🎶三、函数参数和函数的值🎶四、函数的调用结束语🥇


⭐作者想说⭐

啊啊啊啊!三下乡终于结束了,我也开始更新了,不能辜负大佬的督促,加油冲冲冲,喜欢作者的宝宝给个关注😘


⭐前言⭐

欢迎阅读本系列的第一篇《C++程序设计》博客!本文将介绍如何通过函数来实现各种指定功能。函数作为C++编程的基础,不仅能帮助我们组织代码结构,还能提高代码的重用性和可读性。我们将从基础的函数定义和调用开始,逐步深入讨论参数传递、返回值和递归等高级技术。无论您是初学者还是有经验的开发者,本文都将为您提供有价值的学习内容。让我们一起开始这段富有挑战性和乐趣的学习旅程吧!


🎶一、什么是函数

(一)为什么需要函数

1.一般被一个大的程序划分成为一个若干个程序模块(即程序文件),每个模块都是先相应功能。不同的模块可以由不同的人来完成。在分别通过编译后,才进行连接,把各个模块的目标文件及系统文件连接在一起形成多个可执行文件。函数是构成程序的基本模块。

2.一个程序文件中可以包含若干个函数。但是只能有一个main函数(不要以为每个程序模块都有一个main函数)

(二)函数调用的例子

过程化的程序中函数调用示意图如下图所示。

在这里插入图片描述

🌰:编写程序结果如下图所示。

<code> **********************************

Welcome to C++!

**********************************

源代码如下图所示。

#include<iostream>

using namespace std;

void printstar(void)

{

cout<<" **********************************"<<endl;

}

void print_message(void)

{

cout<<" Welcome to C++!"<<endl;

}

int main()

{

//调用相对应的函数code>

printstar();

print_message();

printstar();

return 0;

}

运行结果如下图:

在这里插入图片描述

(三)函数的分类

1.用户角度:(1)系统函数,即库函数。这是由编译系统提供的(例如三角函数sin,求平方根函数sqrt等),用户不必自己定义这些函数,可以直接使用它们。

应该说明,不同的C++编译系统提供的库函数的数量和功能不同,当然有一些基本的函数是共同的。

前面已提到,如果使用自己定义的函数,在程序中要对函数进行声明。那么对库函数要不要声明呢?从理论上说,同样需要声明,但是用户不必自己去声明它,因为在有关的头文件中已包含了声明的内容。这就是在调用函数时必须用#include指令包含相应的头文件的原因。

(2)用户自己定义的函数。用以解决用户的专门需要。

2.函数形式上看:

(1)无参函数。调用函数时不必给出参数。如例子中的printstar 和 print_message就是无参函数。在调用无参函数时,主调函数并不将数据传送给被调用函数,一般用来执行一组固定的操作,printstar 函数的作用总是输出星号。无参函数可以带回或不带回函数值,但一般以不带回函数值的居多。

(2)有参函数。在调用函数时,要给出参数。在主调函数和被调用函数之间有数据传递。也就是说,主调函数将数据传给被调用函数使用。被调用函数可以带回函数值供主调函数使用,也可以不带回函数值(此时函数类型为void)。



🎶二、定义函数的一般形式

(一)定义无参数函数的一般形式(例如本文的第一个🌰)

类型名 函数名 ([void])

{

声明部分

执行语句

}

(二)定义有参数函数的一般形式

类型名 函数名 ([形式参数表列])

{

声明部分

执行语句

}

🌰

int max(int x,int y)

{

int z;

z=x>y?x;y;

return z;

}

这是一个求x和y二者中的大者的函数。在调用此函数时,主调函数把实际参数的值传递给被调用函数中的形式参数x和y。花括号内是函数体,在函数体的语句中求出z的值(为x与y中大者),return(z)的作用是将2的值作为函数值带回到主调函数中,就是函数返回值。



🎶三、函数参数和函数的值

(一)形式参数和实际参数

函数定义时参数列表中的叫做形参 <code>形参可以接受实参传过来的值

函数调用时参数列表中的叫做实参 实参会赋值给形参,让函数内部进行操作

注意:

函数的传参过程,只是单纯的值传递所以在函数内部改变形参的值,不会影响到实参

举个🌰:

求两个整数中的大者,用函数调用来实现。

#include<iostream>

using namespace std;

int max(int x, int y) {

int z;

z = x > y ? x : y;

return z;

}

int main() {

int a, b, c;

cout << "请输入两个整数:" << endl;

cin >> a >> b;

c = max(a, b);

cout << "max=" << c << endl;

return 0;

}

运行结果如下图:

在这里插入图片描述

(二)函数的返回值

通过函数的调用使主调函数能得到一个确定的函数值,这就是函数的返回值。例如第二个🌰:赋值语句将这个函数值赋给变量c。

下面对函数值作一些说明:

(1)函数的返回值是通过函数中的return语句获得的。return语句将被调用函数中的一个确定值带回主调函数中去。

一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。

如果需要从被调用函数带回一个函数值(供主调函数使用),被调用函数中必须包含return语句。

如果不需要从被调用函数带回函数值,则可以不要return语句。

return 语句后面的括号可以要,也可以不要,如“return z;”与“return(z);”等价。return后面的值可以是一个表达式。

例如,第二个栗子中的函数max可以改写为

int max(int x,int y)

( return(x>y?x:y)😉

(2)函数值的类型。既然函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数值的类型

例如下面是几个函数的首部:

int max(float x,float y)// 函数值为整型

char letter(char cl,char c2)// 函数值为字符型

double min(int x,int y)// 函数值为双精度型

第二个🌰中指定max函数值为整型,而变量2也被指定为整型,通过return语句把z的值作为max的函数值,由max带回到主调函数。z的类型与max函数的类型是一致的,是正确的。

(3)如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准,即函数类型决定返回值的类型。对数值型数据,可以自动进行类型转换。



🎶四、函数的调用

(一)函数调用的一般形式

<code>函数名([实参列表])

如果是调用无参函数,则“实参表列”可以没有,但圆括号不能省略,见例1。

如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,类型应匹配(相同或赋值兼容)。

实参与形参按顺序对应,一对一地传递数据。但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的。例如,若变量i的值为3,有以下函数调用:

func(i,++i);

如果按自左至右顺序求实参的值,则函数调用相当于func(3,4),若按自右至左顺序求实参的值,则相当于func(3,3)。许多C++系统(例如Visual C++和GCC)是按自右至左的顺序求值的。

(二)函数的调用方式

1.函数语句

函数调用单独作为一个语句,并不要求函数带回一个值,只是要求函数完成一定的操作:

printstar();

2.函数表达式

函数出现在一个表达式中这时要求函数带回一个确定的值以参加表达式的运算:

c=2*max(a,b);

3.函数参数

函数调用作为一个函数的实参:

m=max(a,sqrt(b));

(三)对被调用函数的声明和函数原型

函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。

函数声明包括以下几个部分

返回类型 函数名(参数列表);

针对前面自定义的max函数,应该这样声明

int max(int a,int b);

在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:

int max(int,int);

函数声明必须和定义时的函数前面一致

函数原型的作用是告诉编译器与该函数有关的信息,让编译器知道函数的存在,以及存在的形式,即使函数暂时没有定义,也不会出错。

🌰:向计算机输入两个整数,用一个函数求出两数之和。

#include<iostream>

using namespace std;

// 函数声明

float add(float x, float y);

int main() {

float a, b, c;

cout << "please enter a, b:" << endl;

cin >> a >> b;

c = add(a, b);

cout << "sum = " << c << endl;

return 0;

}

// 函数定义

float add(float x, float y) {

float z;

z = x + y;

return z;

}

运行结果如下图:

在这里插入图片描述


请添加图片描述

结束语🥇

以上就是C++程序设计

持续更新C++程序设计教程,欢迎大家订阅系列专栏🔥C++程序设计你们的支持!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。