在C++中要如何定义一个函数?

在C++中要如何定义一个函数?,第1张

函数定义格式为:

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

{

return对应的返回值类型数据(常量或变量);

}

做返回值用,也有无返回值的比如说main是无返回值类型的就是void,也就是说如果abc是void类型的他就干完自己的活就什么都不做了;

函数abc()是int类型的也就是又返回值,并且会返回一个整数,它的功能就是将a,b的和返回;而返回来的地方就是调用函数的地方。

1、C++的函数也保存在内存中,所以可以使用指针访问函数地址。

2、声明函数指针,其方法与函数原型差不多,以下为一个函数原型。

3、以上函数原型,其相应的指针声明如下图所示。

4、注意函数指针的声明,不能写成如下图所示。

5、程序中声明了一个函数指针,指针类型为整型。

6、获取一个函数的地址,只要使用函数名即可。

7、使用函数指针调用函数,与普通指针类似,可以用(fq)来间接调用指向的函数。

8、C++中,还允许像使用函数名一样使用函数指针。

1函数的定义
(1)函数的传统定义:设在某变化过程中有两个变量x、y,如果对于x在某一范围内的每一个确定的值,y都有唯一确定的值与它对应,那么就称y是x的函数,x叫做自变量
(2)函数的近代定义:设A,B都是非空的数的集合,f:x→y是从A到B的一个对应法则,那么从A到B的映射f:A→B就叫做函数,记作y=f(x),其中x∈A,y∈B,原象集合A叫做函数f(x)的定义域,象集合C叫做函数f(x)的值域
上述两个定义实质上是一致的,只不过传统定义是从运动变化的观点出发,而近代定义是从集合、映射的观点出发,侧重点不同函数实质上是从集合A到集合B的一个特殊的映射,其特殊性在于集合A、B都是非空数集自变量的取值集合叫做函数的定义域,函数值的集合C叫做函数的值域
这里应该注意的是,值域C并不一定等于集合B,而只能说C是B的一个子集
2函数的三要素
定义域A,值域C以及从A到C的对应法则f,称为函数的三要素由于值域可由定义域和对应法则唯一确定,所以也可以说函数有两要素:定义域和对应法则两个函数当且仅当定义域与对应法则分别相同时,才是同一函数

方法:

1、函数文件+调用函数文件:定义多个M文件;

% 调用函数文件:myfilem

clear

clc

for t=1:10

y=mylfg(t);

fprintf(‘M^(1/3)=%64f\n’,t,y);

end

%自定义函数文件: mylfgm

function y=mylfg(x) %注意:函数名(mylfg)必须与文件名(mylfgm)一致

Y=x^(1/3);

注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。

2、函数文件+子函数:定义一个具有多个子函数的M文件

%命令文件:funtry2m

function []=funtry2()

for t=1:10

y=lfg2(t)

fprintf(‘M^(1/3)=%64f\n’);

End

function y=lfg2(x)

Y= x^(1/3);

%注:自定义函数文件funtry2m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。

3、Inline:无需M文件,直接定义;

%inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。

调用方式:y=f(数值列表) %

注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。

MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。

优势特点:

1、 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来。

2、具有完备的图形处理功能,实现计算结果和编程的可视化。

3、友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握。

4、功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

编程环境:

MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强, *** 作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

1无参函数的一般形式
类型说明符
函数名()
{
类型说明
语句
}
其中类型说明符和函数名称为函数头。
类型说明符指明了本函数的类型,函数的类型实际上是函数返回值的类型。
该类型说明符与第二章介绍的各种说明符相同。
函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不可少。{}
中的内容称为函数体。在函数体中也有类型说明,
这是对函数体内部所用到的变量的类型说明。在很多情况下都不要求无参函数有返回值,
此时函数类型符可以写为void。
我们可以改为一个函数定义:
void
Hello()
{
printf
("Hello,world
\n");
}
 这里,只把main改为Hello作为函数名,其余不变。Hello
函数是一个无参函数,当被其它函数调用时,输出Hello
world字符串。
2有参函数的一般形式
类型说明符
函数名(形式参数表)
型式参数类型说明
{
类型说明
语句
}
有参函数比无参函数多了两个内容,其一是形式参数表,
其二是形式参数类型说明。在形参表中给出的参数称为形式参数,
它们可以是各种类型的变量,
各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。
形参既然是变量,当然必须给以类型说明。例如,定义一个函数,
用于求两个数中的大数,可写为:
int
max(a,b)
int
a,b;
{
if
(a>b)
return
a;
else
return
b;
}
第一行说明max函数是一个整型函数,其返回的函数值是一个整数。形参为a,b。第二行说明a,b均为整型量。
a,b
的具体值是由主调函数在调用时传送过来的。在{}中的函数体内,
除形参外没有使用其它变量,因此只有语句而没有变量类型说明。
上边这种定义方法称为“传统格式”。
这种格式不易于编译系统检查,从而会引起一些非常细微而且难于跟踪的错误。ANSI
C
的新标准中把对形参的类型说明合并到形参表中,称为“现代格式”。
例如max函数用现代格式可定义为:
int
max(int
a,int
b)
{
if(a>b)
return
a;
else
return
b;
}
现代格式在函数定义和函数说明(后面将要介绍)时,
给出了形式参数及其类型,在编译时易于对它们进行查错,
从而保证了函数说明和定义的一致性。例13即采用了这种现代格式。
在max函数体中的return语句是把a(或b)的值作为函数的值返回给主调函数。有返回值函数中至少应有一个return语句。
在C程序中,一个函数的定义可以放在任意位置,
既可放在主函数main之前,也可放在main之后。例如例13中定义了一个max
函数,其位置在main之后,
也可以把它放在main之前。
修改后的程序如下所示。
int
max(int
a,int
b)
{
if(a>b)return
a;
else
return
b;
}
void
main()
{
int
max(int
a,int
b);
int
x,y,z;
printf("input
two
numbers:\n");
scanf("%d%d",&x,&y);
z=max(x,y);
printf("maxmum=%d",z);
}
现在我们可以从函数定义、
函数说明及函数调用的角度来分析整个程序,从中进一步了解函数的各种特点。程序的第1行至第5行为max函数定义。进入主函数后,因为准备调用max函数,故先对max函数进行说明(程序第8行)。函数定义和函数说明并不是一回事,在后面还要专门讨论。
可以看出函数说明与函数定义中的函数头部分相同,但是末尾要加分号。程序第12
行为调用max函数,并把x,y中的值传送给max的形参a,b。max函数执行的
结果
(a或b)将返回给变量z。最后由主函数输出z的值。
说白了,函数其实就是让你的程序更加的简洁,规范,使用方便,而且可以提高代码的有效利用率。达到最好的使用程度。

C语言中一个完整的函数由函数首部和函数体构成,而且定义函数时两者都是必不可少的。
函数定义的一般形式如下:
类型标识符

函数名(形参表列)

//
这是函数首部
//
以下{
}内的是函数体
{
说明部分
执行部分
}
举例说明如下:
// 定义一个不带返回值的函数
// 函数功能:输出形参的值
void fun(int a, int b)
{
printf("%d, %d\n", a, b);
}
// 定义一个带返回值的函数
// 函数功能:返回2个整数数的最大值
int fun(int a, int b)
{
return a>b a : b;
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12605828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存