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

你可能感兴趣的文章
ARTS训练第三周
查看>>
vue中v-for循环如何将变量带入class的属性名中
查看>>
phpstorm xdebug remote配置
查看>>
引用与指针的区别
查看>>
pygtk笔记--2.1:布局容器,VBox、Hbox、Alignment
查看>>
dtree.js树的使用
查看>>
Springboot2.1.3 + redis 实现 cache序列化乱码问题
查看>>
线程什么时候需要同步,什么时候不需要同步?
查看>>
Struts2 自定义拦截器(方法拦截器)
查看>>
Linux服务器的那些性能参数指标
查看>>
BZOJ 2302: [HAOI2011]Problem c [DP 组合计数]
查看>>
c++ 11开始语言本身和标准库支持并发编程
查看>>
.NET Core 之 MSBuild 介绍
查看>>
iOS:即时通讯之<了解篇 SocKet>
查看>>
《JavaScript高级程序设计》读书笔记(十):本地对象Date
查看>>
linux中fork()函数详解
查看>>
从1G到5G,46年屏幕变迁下,富士康、苹果、三星、华为的浴火重生路 ...
查看>>
用flash测试你的ircd
查看>>
白话红黑树系列之二——红黑树的构建
查看>>
客户的一张表中出现重复数据,而该列由唯一键约束,重复值如何产生的呢?...
查看>>