本文涉及到的语言C、C++、Java
函数的定义
函数是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给他取一个名字。
函数可以带有实际参数或者形式参数,用于指定这个函数执行计算要使用的一个或多个值,而且还可以具备返回值,以表示计算的结果。
函数的组成:
返回值 函数名(输入参数){
执行体}
下面举三个例子:
#include<stdio.h>
int max(int a, int b)
{
return (a>b?a:b);
}
int main()
{
int c = max(1,2);
printf("%d",c);
return 0;
}
#include<iostream>
using namespace std;
int max(int a, int b)
{
return (a>b?a:b);
}
int main()
{
int c = max(1,2);
cout<<c;
return 0;
}
public class Hello {
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
函数的基本特征
函数就是一种封装
函数需要定义
函数不会自动执行,需要被调用才可以执行
函数的定义顺序与调用顺序无关
区分变量名和函数名
函数命名规则
1.与变量命名规则一致,以字母、、_
3.区分大小写
4.不能使用关键字和保留字
C++函数中的特性:
C++出具有基本特征外,还具有:
函数参数默认值
注:有参数默认值的函数必须在参数表的最右端
例子:
Void find(int i,int j=10,int k=10);
正确
Void find(int i,int j=1,int k);
错误
#include<iostream>
using namespace std;
void fun(int i,int j=10,int k=90)
{
cout<<i<<j<<k<<endl;
}
int main()
{
fun(20);//i=20,j=10,k=90,j和k选取默认值
fun(20,30);//i=20,j=30,k=90;k选取默认值
fun(20,30,40);//i=20,j=30,k=40
return 0;
}
函数重载
在相同定义域内,用同一函数名定义多个函数,参数类型和参数个数不同
#include<iostream>
using namespace std;
int getMax(int a,int b,int c)
{
int d=a>b?a:b;
int e=a>c?a:c;
return (d>e?d:e);
}
double getMax(double x, double y)
{
return (x>y?x:y);
}
int main()
{
cout<<getMax(10,20,30)<<endl;
cout<<getMax(1.2,9.8);
return 0;
}
内联函数
故事:实验室搬至六楼,小件器件特别多,一同学正一件一件得往六楼搬,老师借给他一个大袋子,这同学一次就把这些小物件搬上了六楼,虽然增加了一个大袋子额重量,却省去了上下六楼100多趟之苦。这个大袋子充当了内联函数的功能。
存在目的:相较执行一般函数,提高程序的运行效率
内联函数与非内联函数的区别:
1.内联函数直接拷贝函数内中的代码区到调用的地方,非内联函数要将程序执行权转到被调函数中,然后再返回到调用它的函数中。
2.同样功能内联函数较非内联函数运行效率高。
3.同样功能内联函数较非内联函数占用内存大。
//在类中定义的成员函数被默认成为内联函数
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
void display()
{
cout<<"name:"<<name<<endl;
}
string name;
};
int main(int argc, char* argv[])
{
Person person;
person.name = "Erin";
person.display();
return 0;
}
//类外定义的函数用inline指定为内置函数
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
inline void display();
string name;
};
inline void Person::display()
{
cout<<"name:"<<name<<endl;
}
int main(int argc, char* argv[])
{
Person person;
person.name = "Erin";
person.display();
return 0;
}
//无内联函数
//既没有在类内定义函数,也没有用inline在类外定义函数
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
void display();
string name;
};
inline void Person::display()
{
cout<<"name:"<<name<<endl;
}
int main(int argc, char* argv[])
{
Person person;
person.name = "Erin";
person.display();
return 0;
}
函数与方法的区别
方法和对象相关
函数和对象无关
Java中只有方法、C中只有函数、C++里取决于是否在类中(在类中的是方法、不在类中定义的是函数)。