#include <iostream>
using namespace std;
void printarray (int arg[], int length) {
for (int n = 0; n < length; n++) {
cout << arg[n] << " ";
cout << "\n";
}
}
int main ()
{
int firstarray[] = {5, 10, 15};
int secondarray[] = {2, 4, 6, 8, 10};
printarray(firstarray, 3);
printarray(secondarray, 5);
return 0;
}
这段代码有效,但我想了解数组是如何传递的。
当拨打电话时printarray
从主函数的函数中,正在传递数组的名称。数组的名称指的是数组第一个元素的地址。这如何等同于int arg[]
?
语法
int[]
and
int[X] // Where X is a compile-time positive integer
完全一样
int*
当在函数参数列表中时(我省略了可选名称)。
此外,当传递给函数(而不是通过引用传递)时,数组名称会衰减为指向第一个元素的指针,因此两者int firstarray[3]
and int secondarray[5]
衰变到int*
s.
也可能发生数组取消引用和指针取消引用都使用下标语法(下标语法是x[y]
) 当您使用相同的索引时,会产生相同元素的左值。
这三个规则结合起来使代码合法并按您期望的方式工作;它只是将指针传递给函数,以及数组的长度,在数组衰减为指针后你无法知道数组的长度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)