2013-12-11 152 views
-3

我新的C++,這是我不斷收到錯誤,我不知道它是什麼。它說在顯示函數行。它有這個錯誤 從'char'到'char *'無效轉換[-fpermissive] | 我可以知道這個錯誤是什麼意思以及如何解決它?錯誤:無效的轉換

void passChar() 
{ 
    char letter[] = {'H','E','L','L','O','!'}; 
    for(int i = 0; i<6; i++) 
    { 
     while(true) 
     { 
      display(letter[i]); 
      swapLetter(letter[i]); 
     } 
    } 



} 

這裏是我的顯示功能

void display(char letter[]) 
{ 
    for(int i = 0 ; i<6 ; i++) 
    { 
     switchStatement(letter[i]); 
    } 
} 

這裏是我的swapletter功能

void swapLetter(char letter[]) 
{ 
    char temp = letter[0]; 
    for(int i = 1; i < 6; i++) 
    { 
     letter[i-1] = letter[i]; 
    } 
    letter[5]= temp; 
} 

我的目標是有無限循環的單詞你好。

+0

「在顯示功能線的」 u可以張貼顯示功能太 – OOkhan

+1

首先,你應該向我們展示'display'和'swapLetter'的原型。另外,即使你編譯,你也會被卡在你的'while(true)'-endless-loop – Toby

回答

0

你的代碼是無效的全部,因爲這個循環

while(true) 
    { 
     display(letter[i]); 
     swapLetter(letter[i]); 
    } 

是無限的,除非任何顯示或swapLetter不具有呼叫 退出。

至於錯誤,那麼它是從該函數期望得到一些字符串,而不是在字符錯誤消息明顯。所以它的參數被聲明爲char s []或者char * s,或者const char s []或者const char * s等等。 即使你將它傳遞給你的數組,它將是一個錯誤,因爲你的數組沒有終止零。我想你應該聲明的數組作爲

char letter[] = {'H','E','L','L','O','!', '\0'}; 

或功能顯示應被聲明爲

void display(char c); 
+0

char letter [] =「HELLO!」;是慣用的方式 –

0

這意味着你傳遞一個char作爲參數傳遞給一個期望char*功能。

你的函數可以真正希望你通過整個字符串,而不是單個字符。所以,你的代碼應該是:

display(letter); 
swapLetter(letter); 

當然,我懷疑,在呈現無意義passChar外循環。無限的while(true)循環似乎很奇怪,雖然你在問題中聲稱它是故意的。在這種情況下,代碼應爲:

void passChar() 
{ 
    char letter[] = {'H','E','L','L','O','!'}; 
    while(true) 
    { 
     display(letter); 
     swapLetter(letter); 
    } 
} 

個人而言,我想我會編寫displayswapLetter接受char*並使用空終止符檢測長度。

void passChar() 
{ 
    char letter[] = "HELLO!"; 
    while(true) 
    { 
     display(letter); 
     swapLetter(letter); 
    } 
} 

,然後修改displayswapLetter使用空終止查找字符串的結尾。

0

大概是因爲你的display()功能如下所示:

​​

letter[i]char類型,上述功能預計char* ...

+0

我已經添加了上面的顯示函數。請看看 – user3084845