函数的声明和内联函数

一、函数的声明

当要调用函数时,C++语言规定在调用一个函数之前必须有该函数的声明。

►C++规定函数的定义既是函数定义,也是函数声明。换言之,只要函数调用是写在函数定义的后面,就自然有了函数声明;若调用在定义之前,在调用之前需写出函数原型(声明)

►声明的作用是程序向编译器提供函数的接口信息,因而多次提供接口信息是允许的,但不能提供相互矛盾、语义不一致的接口信息。

如:平方根运算

#include <iostream> //标准输入输出函数库
#include <cmath> //数学函数库
 using namespace std; //使用标准命名空间
 double root(double x, double y) //root函数求x-y的平方根
 { if(x>=y) return sqrt(x-y);//只有在x大于等于y时计算x-y的平方根
 else return 0; //否则返回0
 }
 int main() //主函数
 { 
double a, b; //定义两个浮点型变量
 cin >> a >> b ;//输入两个数
 cout << root(a,b) << endl; //输出a-b的平方根
 return 0; //主函数正常结束返回0
 }

函数原型

►函数原型(function prototype)的作用:提供函数调用所必须的接口信息,使编译器能够检查函数调用中可能存在的问题,有两种形式:

►①第一种形式: 返回类型 函数名(类型1 形参1,类型2 形参2,……);

►②第二种形式:返回类型 函数名(类型1 ,类型2 ,……);

如:求m,n的最大公约数 (欧几里得算法)

#include <iostream>
 using namespace std;
 int gcd(int m, int n); //gcd函数原型,gcd函数声明在前
int main()
 {
 int m,n;
 cin>>m>>n;
 cout<<gcd(m,n)<<endl; //调用时已有gcd函数声明
 return 0;
}
int gcd(int m, int n) //求最大公约数,gcd函数实现在后
 {
 int r;
 while (n!=0) { //欧几里德算法,原理是:
 r = m % n ; //r为m/n的余数
 m = n ; //则gcd(m,n)=gcd(n,r)=...
 n = r ; //r=0时n即是gcd
 }
 return m;
} 

输出:m=9, n=6

          ① r=3, m=6, n=3 ② r=0, m=3, n= 0

函数调用

►有了函数声明,就可以调用函数,有参数函数调用的形式为:函数名(实参列表);

►实参可以是常量、变量、表达式和函数调用,各实参之间用逗号 (,)分隔。实参的类型、次序、个数应与形参一致。 

►在C++语言中,可以用以下几种方式调用函数

(1)函数表达式。

         z = max(x,y);

(2)函数调用语句。(多为调用无返回值函数)

         max(x,y);

(3)函数实参 

         m=max(max(x,y),z); 

内联函数 

内联函数的声明是在函数定义的类型前加上inline修饰符,定义形式为:

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

{

函数体

}

 注意:

 内联函数中不允许用循环语句switch语句。

 内联函数的声明必须出现在内联函数第一次被调用之前。

#include <iostream>  
using namespace std;  
inline int fun(int a,int b) //内联函数 
{ 
return a*a+b*b; 
} 
 int main()
{  
int n=5,m=8,k; 
k = fun(n,m); //调用点嵌入 a*a+b*b 代码,即:k=n*n+m*m
cout<<"k="<<k<<endl; 
return 0;
}

函数定义与声明的具体区别:函数的定义与声明的区别_不吃玉米尖尖的博客-CSDN博客_函数声明和定义的区别 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木(。・ω・。)ノ♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值