博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++函数
阅读量:6950 次
发布时间:2019-06-27

本文共 1931 字,大约阅读时间需要 6 分钟。

通过使用函数(functions)我们可以把我们的程序以更模块化的形式组织起来,从而利用C++所能提供的所有结构化编程的潜力。

一个函数(function)是一个可以从程序其它地方调用执行的语句块。以下是它的格式:

type name ( argument1, argument2, ...) statement

  • type 是函数返回的数据的类型
  • name 是函数被调用时使用的名
  • argument 是函数调用需要传入的参量(可以声明任意多个参量)。每个参量(argument)由一个数据类型后面跟一个标识名称组成,就像变量声明中一样(例如,int x)。参量仅在函数范围内有效,可以和函数中的其它变量一样使用, 它们使得函数在被调用时可以传入参数,不同的参数用逗号(comma)隔开.
  • statement 是函数的内容。它可以是一句指令,也可以是一组指令组成的语句块。如果是一组指令,则语句块必须用花括号{}括起来,这也是我们最常见到情况。其实为了使程序的格式更加统一清晰,建议在仅有一条指令的时候也使用花括号,这是一个良好的编程习惯

一个函数的例子:

 

#include 
int add(int a, int b) {
int r; r=a+b; return (r); } int main () {
int z; z = add(5,3); printf("The result is %d\n", z); return 0; }

 

函数参数按地址传递:

#include 
void swap(int& a, int& b) {
int temp =a; a = b; b = temp; } int main () {
int x = 1, y = 3; printf("begin swap:x=%d,y=%d\n", x, y); swap(x, y); printf("after swap:x=%d,y=%d\n", x, y); return 0; }

 

函数参数的默认值:

当声明一个函数的时候我们可以给每一个参数指定一个默认值。如果当函数被调用时没有给出该参数的值,那么这个默认值将被使用。指定参数默认值只需要在函数声明时把一个数值赋给参数。如果函数被调用时没有数值传递给该参数,那么默认值将被使用。但如果有指定的数值传递给参数,那么默认值将被指定的数值取代。例如

#include 
int divide(int a, int b=2) {
int r; r=a/b; return (r); } int main () {
printf("divide(12) = %d\n", divide(12)); printf("divide(20,4) = %d\n", divide(20,4)); return 0; }

函数重载

两个不同的函数可以用同样的名字,只要它们的参量(arguments)的原型(prototype)不同,也就是说你可以把同一个名字给多个函数,如果它们用不同数量的参数,或不同类型的参数。例如:

#include 
int divide(int a, int b) {
return (a/b); } float divide(float a, float b) {
return (a/b); } int main () {
int x=5,y=2; float m=5.0, n=2.0; printf("divide(x, y) = %d\n", divide(x, y)); printf("divide(m, n) = %f\n", divide(m, n)); return 0; }

inline 函数

  inline指令可以被放在函数声明之前,要求该函数必须在被调用的地方以代码形式被编译。这相当于一个宏定义(macro)。它的好处只对短小的函数有效,这种情况下因为避免了调用函数的一些常规操作的时间(overhead),如参数堆栈操作的时间,所以编译结果的运行代码会更快一些。

它的声明形式是:

inline type name ( arguments ... ) { instructions ... }

    它的调用和其他的函数调用一样。调用函数的时候并不需要写关键字inline ,只有在函数声明前需要写。

转载地址:http://dekil.baihongyu.com/

你可能感兴趣的文章
CenturyLink设定NG-PON2部署阶段 业务、无线回程为初始服务目标
查看>>
外贸SaaS服务公司小满科技获达晨数千万元投资
查看>>
DigitalOcean发布弹性块存储服务
查看>>
物联网还是泄秘网?嗅探流量即可知用户动向
查看>>
智能美观网速快 有这样的无线路由吗?
查看>>
存储器火热 大陆厂商3倍薪水赴台挖人
查看>>
销售方法论居然来自公司战略!看看IBM、华为、SAP是怎么做的
查看>>
何建坤:实施能源革命战略 促绿色低碳发展
查看>>
诺基亚成功转型:引领新一代5G技术 布局物联网
查看>>
手机圈老兵任伟光加盟联想
查看>>
Google Home其实是个错误
查看>>
热点:阿里云推国内首个高级政务云平台
查看>>
渠道下沉 阿里争食社区经济最后一公里
查看>>
个人信息保护须形成更大合力
查看>>
维珍媒体确定收购Arqiva WiFi 将进一步扩大公共WiFi覆盖面积
查看>>
白帽子也能迎娶白富美:2017八大高薪信息安全认证
查看>>
大数据市场交易趋旺物联网平台争夺加剧
查看>>
CIO:互联网IT系统和传统企业IT系统的异同
查看>>
Go 语言的垃圾回收算法被吹过头?与Java比如何?
查看>>
《Cisco安全防火墙服务模块(FWSM)解决方案》——2.6 硬件架构
查看>>