我想在函数B中对数组A执行某些操作。在函数B中,更改了A的某个值。我知道因为A是一个指针,所以在执行B之后它的值会被改变。因此我必须使用C作为A的副本,以确保在执行B之后A不会被更改。
我很奇怪还有其他方法我不必使用数组C吗?
答案 0 :(得分:1)
如果您不想更改其值,可以创建参数const
:
void func( const int * intArray, size_t size) {...}
答案 1 :(得分:1)
有很多方法可以做到:
std::array
。std::vector<int>
传递数组。您可以修改本地副本和参数数组,但不会更改。const int *arr
或const int (&arr)[10]
答案 2 :(得分:0)
或者你可以这样写:
void func (const int array[10])
{
// you can work with you data here withot changing an array
}
答案 3 :(得分:0)
如果要将指针传递给数组并且要确保未在函数内修改数组内容,可以使用const
:
void DoSomething(const int * data, size_t size)
在C ++中,您可能需要考虑像std::vector
这样的容器类,并且可以使用引用const
来传递它(避免使用无用且可能昂贵的矢量深度副本:
void DoSomethingCppStyle(const std::vector<int>& data)
请注意,在这种情况下,无需单独传递size参数,因为std::vector
知道自己的大小(由std::vector::size()
返回)。
答案 4 :(得分:0)
无法在C ++中按值传递数组。
您必须手动制作副本并且&#34;传递&#34;那个,或用包裹数组的容器替换数组,例如std::array
或std::vector
。