#include<iostream>
using namespace std;
//定义max函数
void max(int a, int b) //int a, int b即为参数列表
{
if(a>b)
cout<< a << endl ;
else
cout<< b << endl ;
}
int main()
{
int x = 10, y = 20 ; //待比较的数
max(x, y) ; //调用并传入x和y的值
system("pause");
return 0;
}
一、函数的参数传递
1>. 值传递
值传递是指向函数传递自身的一个副本, 也可以认为是自身的克隆, 他最大的一个特点就是函数对传入的副本进行操作不会影响到实参的本身, 看一个示例, 我们想通过函数来改变一个变量的值:
#include<iostream>
using namespace std ;
void fun(int val)
{
val = 100 ; //将传进来的参数的值更改为100
}
int main()
{
int n = 0 ;
fun(n) ; //尝试通过函数改变n的值
cout<<"n = "<<n ;
return 0 ;
}
2>. 指针传递
一个有效的指针变量中存放的是该变量的地址, 向函数参数中传递指针就意味着函数能根据指针指向的地址来找到这个变量的实际存储位置, 对实际位置中的内容进行操作, 实参的值自然就会跟着改变, 看一个示例:
#include<iostream>
using namespace std;
void fun(int &r)
{
r = 100 ; //通过引用改变实参的值
}
int main()
{
int n = 0 ;
int &rn = n ;
fun(rn) ; //传递n的引用rn
cout<<"n = "<<n ;
return 0 ;
}
三、inline函数
inline 函数又称 "内联函数", 他主要运用在函数体重执行的语句较少但又会被频繁调用的函数中, 例如调用函数输出10000条"hello":
#include<iostream>
using namespace std;
void fun()
{
cout<<"Hello, world!\n" ;
}
int main()
{
int i ;
for(i=0; i<10000; i++)
fun() ; //短时间内将会被调用10000次
return 0 ;
}
#include<iostream>
using namespace std;
inline void fun()
{
cout<<"Hello, world!\n" ;
}
int main()
{
int i ;
for(i=0; i<10000; i++)
fun() ; //短时间内将会被调用10000次
return 0 ;
}
在使用inline函数时需要注意的几点问题:
1>. inline 函数的函数体语句不适合过多 ;
2>. inline 函数中不能有 循环、if或switch语句, 否则编译器将会把该函数当做普通函数来处理 ;
3>. 一个文件中定义的inline函数不能再另一个文件中使用 。
四、函数的声明
在前面的示例中, 我们采取的是直接定义一个函数, 然后再在main函数或其他函数中进行调用, 但是这样做有一个问题, 当函数定义过多, 然后再互相嵌套调用时就非常容易报错。
View Code
#include<iostream>
using namespace std;
void fun() ; //声明fun函数
int main()
{
fun() ;
return 0 ;
}
void fun()
{
cout<<"Hello, world!\n" ;
}