簡體   English   中英

如何通過引用將數組傳遞給函數?

[英]How to pass an array to a function by reference?

我正在尋找如何將一個字符串/數組傳遞給一個函數,我試圖通過值傳遞,但它似乎不起作用,我已經在線查看並通過引用看到但是這似乎沒有工作。

有人可以幫忙嗎?

您可以通過引用聲明一個包含10個int數組的函數,如下所示:

void f(int (&arr)[10]);

你這樣稱呼它

int arr[10];
f(arr);

你可以模板化你的功能

template<class T, int N>
void f(T (&arr)[N]);

如果您使用的是可變大小的數組,則應使用以下內容:

void someFunc(char* szString, int cbChars)
{
    for (int nChar == 0; nChar < cbChars; nChar++)
    {   // Do something with the char array
        szString[nChar] = 'A'; // Convert string to "AAAAAA..."
    {
}

void callerFunc()
{
    char szString[255];
    // read file...
    // put file contents in szString
    // and call the above function passing the string 'by reference'
    someFunc(szString, 255);
}

也就是說,只需將指針傳遞給數組(必須為相同類型)及其大小(這樣您就知道在哪里停止並避免異常)。

您可以對任何數據類型的數組執行相同的操作,有一個很好的指針教程: http//www.cplusplus.com/doc/tutorial/pointers/

如果您正在使用最近的編譯器,例如最近的gcc和visual studio(提供C ++ 11容器),您可以使用std :: array而不是原始數組,並在閱讀時更加清晰。

這是使用std :: array的Armen Tsirunyan回答:

void f( std::array<int,10> & arr );

你這樣稱呼它

std::array<int,10> arr;
f(arr);

你可以模板化你的功能

template<class T, int N>
void f( std::array<T,N> & arr );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM