数组作为函数参数传递时
来源:互联网 发布:程序员的自我修养pdf 编辑:程序博客网 时间:2024/06/05 15:56
本文需要解决C++中关于数组的2个问题:
1. 数组作为函数参数,传值还是传址?
2. 函数参数中的数组元素个数能否确定?
先看下面的代码。
[cpp] view plain copy
运行结果如下:
in main...
array address: 0012FF4C
array size: 20
array element count: 5
in func...
array address: 0012FF4C
array size: 4
array element count: 1
changing the 4th element's value to 10.
the 4th element's value: 10
当我们直接将数组a作为参数调用testArrayArg()时,实参与形参的地址均是0012FF4C。并且,在testArrayArg()中将a[3]的值修改为10后,返回main()函数中,a[3]的值也已经改变。这些都说明C++中数组作为函数参数是传址。
特别需要注意的是,在main()中,数组的大小是可以确定的。
array size: 20
array element count: 5
但作为函数参数传递后,其大小信息丢失,只剩下数组中第一个元素的信息。
array size: 4
array element count: 1
这是因为C++实际上是将数组作为指针来传递,而该指针指向数组的第一个元素。至于后面数组在哪里结束,C++的函数传递机制并不负责。
上面的特性可总结为,数组仅在定义其的域范围内可确定大小。
因此,如果在接受数组参数的函数中访问数组的各个元素,需在定义数组的域范围将数组大小作为另一辅助参数传递。则有另一函数定义如下:
可在main()中这样调用:
testArrayArg2(a, sizeof(a) / sizeof(a[0]));
这样,testArrayArg2()中便可安全地访问数组元素了。
- 数组作为函数参数传递时
- 数组作为函数参数传递
- 数组作为函数参数传递
- 二维数组作为函数参数传递时函数的声明
- 数组作为参数传递时
- 数组作为参数传递时,注意重载函数!
- 多维动态数组作为函数传递参数
- 函数,数组作为参数传递(转)
- 专题:二维数组作为函数参数传递
- 数组作为函数参数的传递
- 数组作为函数参数进行传递
- 数组作为函数的参数传递
- 数组作为函数参数的传递方法
- 二维数组作为函数参数传递剖析
- 数组作为函数的参数传递
- go数组作为函数参数传递
- 二维数组 作为函数参数 传递方法
- 二维数组作为函数参数传递
- 【Django1】基本知识,URL映射,视图渲染,模板应用
- Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
- 移动端布局之REM,以及实际使用总结
- Java 随机生成六位数验证码
- Android studio 自学笔记(一) 自定义 Dialog
- 数组作为函数参数传递时
- js/jquery 无刷分页通用代码
- ASM 翻译系列第三十七弹:ASM密码文件目录
- [LeetCode]Total Hamming Distance(Java)
- ha 资源启动不了
- 咘叮电子
- linux中与Oracle有关的内核参数详解
- Hadoop之wordcount有感
- Solr Admin Solr管理界面介绍(一)