繁体   English   中英

将数组传递给函数而不更改其值?

[英]Passing an array to function without changing its value?

我想对函数B中的数组A进行操作。在函数B中,A的某些值已更改。 我知道,因为A是一个指针,所以在执行B之后它将更改其值。 因此,我必须使用C(它是A的副本)来确保A在执行B之后没有被更改。

我想知道还有其他不必使用数组C的方法吗?

如果不想更改其值,可以将其设置为const

void func( const int * intArray, size_t size) {...}

有很多方法可以做到这一点:

  1. 如果您使用的是C ++ 11,请使用std::array
  2. 使用std::vector<int>传递数组。 您可以修改本地副本,并且参数数组不会更改。
  3. 如果您不想修改值,请将其作为const *或const引用传递给数组。 对于ex const int *arrconst int (&arr)[10]

或者您可以这样写:

void func (const int array[10])
{
   // you can work with you data here withot changing an array
}

如果要传递指向数组的指针,并且要确保函数内未修改数组内容,则可以使用const

void DoSomething(const int * data, size_t size)

在C ++中,您可能需要考虑一个类似于std::vector容器类 ,并且可以使用const引用来传递它(避免使用无用且可能昂贵的vector的深层副本):

void DoSomethingCppStyle(const std::vector<int>& data)

请注意,在这种情况下,无需单独传递size参数,因为std::vector知道自己的大小(由std::vector::size() )。

在C ++中,无法通过值传递数组。

您必须手动制作一个副本并“传递”它,或者用包装了数组的容器(例如std::arraystd::vector替换该数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM