簡體   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