簡體   English   中英

C ++將char數組傳遞給void函數

[英]c++ pass char array to void function

任務是將每個大寫字母更改為小寫,反之亦然,並將每個數字增加1,並將9更改為0。

#include <iostream>
using namespace std;

void modif ( char*& arr){
    for (int i=0;arr[i]!=0;i++)
        if ('a'<=arr[i] && arr[i]<='z'){
            arr[i]=char(((int)arr[i])-32);
        }
        else if ('A'<=arr[i] && arr[i]<='Z'){
            arr[i]=char(((int)arr[i])+32);
        }
        else if ('0'<=arr[i] && arr[i]<='8'){
            arr[i]=char(((int)arr[i])+1);
        }
        else if (arr[i]== '9'){
            arr[i]=char(((int)arr[i])-8);
        }
}

int main() {
    char * s=new char [100];
    cin.getline (s, 100);
    void modif (char * s);

    cout << s  << endl;
    delete [] s;
}

我可以在沒有void函數的情況下使其正常工作,但不能使用它

嘗試這樣做,以便您實際調用該函數:

int main() {
    char * s=new char [100];
    cin.getline (s, 100);
    // void modif (char * s); // removed line
    modif(s);                 // new line

    cout << s  << endl;
    delete [] s;

}

這行:

void modif (char * s);

是一個函數聲明,您要使用以下命令調用它:

modif(s);

您也不需要在函數中使用char*&char*就足夠了。

void modif (char * s); 前瞻性聲明 在您的示例中這是不必要的,因為modif是在其調用點之上定義的。 如果您想將modif移到main下方文件中的某個位置,或者完全移至另一個文件,則需要它:

#include <iostream>
using namespace std;

int main() {
    char * s=new char [100];
    cin.getline (s, 100);
    void modif (char*&); // Forward declaration
    modif(s);            // Call
    cout << s  << endl;
    delete [] s;
}

void modif ( char*& arr){
    for (int i=0;arr[i]!=0;i++)
    if ('a'<=arr[i] && arr[i]<='z'){
       arr[i]=char(((int)arr[i])-32);
    }

   else if ('A'<=arr[i] && arr[i]<='Z'){
       arr[i]=char(((int)arr[i])+32);
    }
    else if ('0'<=arr[i] && arr[i]<='8'){
       arr[i]=char(((int)arr[i])+1);
    }
    else if (arr[i]== '9'){
       arr[i]=char(((int)arr[i])-8);
    }
}

前向聲明向編譯器保證在其他地方將定義您的函數。 這樣,如果您選擇調用函數,則編譯器知道如何進行調用。 請注意,聲明和定義中的簽名必須匹配。

另一方面,該呼叫如下所示:

modif(s);

在這里,您告訴編譯器您要調用函數modif ,並將s的當前值傳遞給它的形式參數arr

暫無
暫無

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

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