博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(原創) array可以使用reference方式傳進function嗎? (C/C++)
阅读量:5966 次
发布时间:2019-06-19

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

任何型態皆可用C++新提出的reference傳進function,array除了使用pointer方式傳進function外,當然也可以使用reference。

當使用pointer傳進function時,compiler只對array的型態做檢查,就算傳進function時指定了array size,compiler也會忽略,但若使用reference,compiler則會對array size做檢查。

 1
ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/* 
 2InBlock.gif(C) OOMusou 2007 http://oomusou.cnblogs.com
 3InBlock.gif
 4InBlock.gifFilename    : ArrayReferencePassToFunction.cpp
 5InBlock.gifCompiler    : Visual C++ 8.0 / ISO C++
 6InBlock.gifDescription : Demo how to use reference array pass to function
 7InBlock.gifRelease     : 02/09/2007 1.0
 8ExpandedBlockEnd.gif*/
 9
None.gif
10
None.gif#include 
<
iostream
>
11
None.gif
12
None.gif
using
 
namespace
 std;
13
None.gif
14
ExpandedBlockStart.gifContractedBlock.gif
void
 func(
int
 (
&
arr)[
3
]) 
dot.gif
{
15ExpandedSubBlockStart.gifContractedSubBlock.gif  for(int i = 0; i != 3++i) dot.gif{
16InBlock.gif    cout << arr[i] << endl;
17ExpandedSubBlockEnd.gif  }
18ExpandedBlockEnd.gif}
19
None.gif
20
ExpandedBlockStart.gifContractedBlock.gif
int
 main() 
dot.gif
{
21ExpandedSubBlockStart.gifContractedSubBlock.gif  int ia[] = dot.gif{
012}
;
22InBlock.gif  func(ia);
23ExpandedBlockEnd.gif}

14行int (&arr)[3],&arr一定要括號,因為[]比&優先權高。

int &arr[3] // 一個array有三個元素,每個元素為int型態的reference

int (&arr)[3] 三個int型態元素array的reference

雖然compiler能幫我們檢查array size看似不錯,但須將array size寫死,則減少了程式的彈性,若配合function template,則可處理任意size的array。

See Also

Reference
C++ Primer 4th P.240

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

你可能感兴趣的文章
运维平台第一版本实现过程
查看>>
启动oracle em命令
查看>>
Android Studio 第五十六期 - Android之系统设置选项的包名
查看>>
mysql准实时同步数据到Elasticsearch
查看>>
Django+ PowerShell 管理AD系统
查看>>
MFA(Multi-Factor Authentication)应用之Outlook2013排错
查看>>
Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统
查看>>
Docker学习之容器
查看>>
17.Azure备份(MARS)代理(上)
查看>>
解决MSN无法登录问题的意外收获
查看>>
不只是折腾!OS X 10.10 Yosemite 改造攻略
查看>>
演示:通过实验取证IP报文的各个字段
查看>>
C#设计模式(6)——原型模式(Prototype Pattern)
查看>>
Lync日常维护之三:客户端显示状态未更新的处理方法
查看>>
Oracle网格控制器OMA端安装Yast
查看>>
Android应用程序组件Content Provider应用实例(1)
查看>>
NFC 一次通讯网页
查看>>
tag应用如何根据meta-data内容杀指定应用
查看>>
工程android配置windows7下cocos2d-x、android的开发环境
查看>>
文件androidAndroid使用PULL解析和生成XML文件
查看>>