[英]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.