函数返回值类型 函数名(形参列表)
{
函数体;
return 返回值;
}
1》:函数返回值类型:即一个数据类型,可以为int,float,double,char,bool等等,需注意,当函数返回值类型为void时,函数没有返回值。
2》:函数名称,命名规则同变量名命名规则,是自定义的,尽量取有意义的函数名称。例,求最大值的函数可以命名为max, 起搜索作用的函数可以命名为search,,等等。因为当一个程序较大时,各个函数如果只是简单的a,b,c,会很容易混淆。
3》:形参列表,可以将其简单理解为函数 f(x)=a*x^2+b*x+c(a,b,c为常数),中的x, 既然为列表,则可以有多个传入值,既可以理解为f(x,y,z)=a*x+b*y+c*z+d(a,b,c,d为常数)中的“x,y,z”;当然个数没有限制,亦可以没有传入值,此时可以通过对全局变量的操作来实现函数的功能。具体用法为(数据类型 变量名,数据类型 变量名,数据类型 变量名)。
4》:函数体,即对形式参数或全局变量进行操作的一段代码。
5》:返回值,一个函数可以有多个return ,但最多只有一个返回值。
2,函数的调用
函数的调用很简单:函数名(参数1,参数2);
注意:1-传递的参数一定要与定义时的形参列表中的数据类型一一对应。
2-调用完函数之后要加引号以示语句结束。
3,函数的参数传递方式:
以一个交换变量值的小程序打头:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<"a="<<a<<" b="<<b<<endl;
int c;//红色为交换过程
c=a;
a=b;
b=c;
cout<<"a="<<a<<" b="<<b<<endl;
return 0;
}
1》:按值传递
#include<bits/stdc++.h>
using namespace std;
void swap(int a.int b)
{
int c;
c=a;
a=b;
b=c;
return ;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<"a="<<a<<" b="<<b<<endl;
swap(a,b);
cout<<"a="<<a<<" b="<<b<<endl;
return 0;
}
将不能交换,因为被调用函数本身不对实参进行操作!即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。
但可以在swap函数内输出,
2》:按址传递:
#include<bits/stdc++.h>
using namespace std;
void swap(int* pa.int* pb)
{
int pc;
pc=*pa;
*pa=*pb;
*pb=pc;
return ;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<"a="<<a<<" b="<<b<<endl;
swap(&a,&b);
cout<<"a="<<a<<" b="<<b<<endl;
return 0;
}
将能够实现,不过涉及到指针变量的内容,容易出错。
简单了解一下指针:
(1):定义指针变量:变量类型* 变量名。其中变量类型为指针所指的变量的类型;例:int* pa;
(2):取地址运算:&a;将得到变量a的地址;
(3):取内容运算:*pa;将得到 pa内的所存地址内的内容;
3》:引用传递:
#include<bits/stdc++.h>
using namespace std;
void swap(int &a.int &pb)
{
int c;
c=a;
a=b;
b=c;
return ;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<"a="<<a<<" b="<<b<<endl;
swap(a,b);
cout<<"a="<<a<<" b="<<b<<endl;
return 0;
}
4,其他的函数的传递数据
1-传递一个数组
1》:定义时的格式为:返回值类型 函数名(数组数据类型,自定义数组名[ ] )
调用时的格式为:函数名(数组名);
2》:也可以将数组定为全局变量,直接用函数对其进行操作。
3》:亦可以用指针来传递一个数组,
int main( )
{ int a [10],*p;
p=a;//a 即为数组a的首地址,所以不用取址符
......
f(p, 10);
.....
}
f(int x[ ], int n )
{
......
}
PS:值得一提的是,对于一个指向数组的指针,当指针加一时, 其指向的地址是该数组数据类型大小的下一个地址,即当int指针指向数组a[0]时,p+1就指向a[1]的地址。