博客
关于我
强烈建议你试试无所不能的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/

你可能感兴趣的文章
WebComponent魔法堂:深究Custom Element 之 面向痛点编程
查看>>
【Android】源码external/目录中在编译过程中生成的文件列表
查看>>
C# 中 string.Empty、""、null的区别
查看>>
【微信公众号】将微信公众号消息里的FromUserName即OpenID转成UnionID
查看>>
css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数
查看>>
基于SSM的租赁管理系统0.2_20161225_开发环境
查看>>
洛谷 P3386 【模板】二分图匹配 Dinic版
查看>>
iOS 图片本地存储、本地获取、本地删除
查看>>
mobiscroll之treelist使用
查看>>
各种气候数据的下载(以下载青岛地区40年间月平均气温数据的下载为例)【转】...
查看>>
GIT和SVN之间的五个基本区别
查看>>
腾讯AlloyTeam正式发布omi-cli脚手架 - 创建网站无需任何配置
查看>>
30 天精通 RxJS(27):简易实现 Observable(二)
查看>>
PyTorch 0.4源码安装(Windows)
查看>>
Struts2第四篇【请求数据自动封装、Action得到域对象】
查看>>
js实现点击查看全文(类似今日头条、知乎日报效果)
查看>>
【火炉炼AI】机器学习031-KNN回归器模型的构建
查看>>
想晋级高级工程师只知道表面是不够的!Git内部原理介绍
查看>>
JavaScript基础——深入学习async/await
查看>>
MVP那些事儿(6)MVC转化为MVP
查看>>