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

你可能感兴趣的文章
jsf初学解决GlassFish Server 无法启动
查看>>
【Gson】2.2.4 StackOverflowError 异常
查看>>
hdu 1050 (preinitilization or postcleansing, std::fill) ...
查看>>
Form各键盘触发子所对应的“按键”
查看>>
【java IO】使用Java输入输出流 读取txt文件内数据,进行拼接后写入到另一个文件中...
查看>>
Linux系统下安装rz/sz命令及使用说明
查看>>
点击按钮抓不到页面的参数
查看>>
CentOS 6.5 下安装 Redis 2.8.7
查看>>
CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法
查看>>
[CENTOS7] [IPTABLES] 卸载Firewall Id安装 IPTABLES及防火墙设置
查看>>
CCN(content centric networking)介绍
查看>>
mysql表死锁查询
查看>>
第一次模拟面试
查看>>
window.showModalDialog
查看>>
CSS——NO.9(颜色值和长度值)
查看>>
UML作业第五次:分析系统,绘制状态图
查看>>
移动端API接口优化的术和结果
查看>>
VBS操作注册表设置新建读取,删除等操作(更新中)
查看>>
算法(Algorithms)第4版 练习 2.1.24
查看>>
Pycharm选择pyenv安装的Python版本
查看>>