2012-10-24 68 views
1
void decimal2binary(char *decimal, char *binary) { 
    //method information goes here  
} 

這是主要的不兼容的指針類型字符**與char *錯誤

int main(int argc, char **argv) { 

char *data[100]; 
if (argc != 4) { 
    printf("invalid number of arguments\n"); 
    return 1; 
} 
if (strcmp(argv[1] , "-d")) { 

    if (strcmp(argv[3] , "-b")) { 
     decimal2binary(temp, data); 
    } 
    } 
} 

現在我得到這個錯誤

 warning: passing argument 2 of ‘decimal2binary’ from incompatible pointer type [enabled by default] 

    note: expected ‘char *’ but argument is of type ‘char **’ 

所以說,他們是不兼容的類型,但我必須使用argv來獲取數據(我被問到的方式)有沒有其他方法?

+0

接受Json的答案,如果它適合你。 ;) Json給出了正確的解釋 – Vishal

回答

8

變化data簡單的聲明:

char data[100]; 

爲你的代碼代表,現在你不需要指針數組鍵入char,這是你聲明的內容。你只需要一個字節數組。我相信你的困惑源自這樣一個事實:雖然數組不是指針,但當作爲函數參數傳遞時,它們會衰減爲指向數組第一個元素的指針。因此,通過簡單地說decimal2binary(temp, data);,您傳遞的是指向第一個元素data的指針,在這種情況下,您需要指向char而不是char*

+0

噢好了,修復了我的代碼。非常感謝!!' – Nabmeister