这算作按值传递还是按引用传递?
当您说“将数组传递给函数”时,实际上将指向第一个元素的指针传递给函数。这允许被调用的函数修改数组的内容。由于没有创建数组的副本,因此可以说数组是通过引用传递的。
关于我如何做到这一点的提示?
测试应该是:
- 在 中创建一个本地数组
main()
。
- 用已知模式填充它
- 打印数组的内容
- 将数组传递给函数
- 在函数体内部修改数组的内容
- 打印函数内部的数组
- 再次
main()
打印本地数组的内容
- 如果输出
6
并7
匹配。你有证据。
如何按值传递数组?
按值传递数组的唯一可能方法是将其包装在结构中。
在线样品:
#include <iostream>
struct myArrayWrapper
{
int m_array[5];
};
void doSomething(myArrayWrapper a)
{
int* A = a.m_array;
//Display array contents
std::cout<<"\nIn Function Before Modification\n";
for (size_t j = 0; j < 5; ++j)
std::cout << ' ' << A[j];
std::cout << std::endl;
//Modify the array
for (size_t j = 0; j < 5; ++j)
A[j] = 100;
std::cout<<"\nIn Function After Modification\n";
//Display array contents
for (size_t j = 0; j < 5; ++j)
std::cout << ' ' << A[j];
std::cout << std::endl;
}
int main()
{
myArrayWrapper obj;
obj.m_array[0] = 0;
obj.m_array[1] = 1;
obj.m_array[2] = 2;
obj.m_array[3] = 3;
obj.m_array[4] = 4;
doSomething(obj);
//Display array contents
std::cout<<"\nIn Main\n";
for (size_t j = 0; j < 5; ++j)
std::cout << ' ' << obj.m_array[j];
std::cout << std::endl;
return 0;
}
输出:
In Function Before Modification
0 1 2 3 4
In Function After Modification
100 100 100 100 100
In Main
0 1 2 3 4