2013-04-03 20 views
0

所以我正在研究這個套牌程序,現在我已經有了幾乎所有的工作,我只需要進行洗牌功能。但是當我嘗試繼續獲得標題中的錯誤我不斷收到這個錯誤:傳遞`shuffle'的arg 1使得整型指針沒有投射

爲了保持簡短,我將發佈該函數,但基本上我只需要打印一次(工作)的卡組,然後在一個函數中洗牌並返回洗牌平臺並再次打印(現在洗牌)。

我不明白爲什麼我得到這個錯誤,因爲我只使用一種變量類型。如果我能得到一些很好的幫助。

這裏是有關的代碼:

int shuffle(int deck[52]); /*Function Prototype*/ 

int main() 
{ 
    int deck[52], i, n; 


    shuffle(deck[52]); /* Function Call */ 

} 

int shuffle(int deck[52]) 
{ 
srand(52); 

deck[52] = rand(); 

printf("The deck has been shuffled"); 

return deck[52]; 
} 
+0

(甲板[52]);/*函數調用* /'。你告訴它將'deck []'的第52個元素傳遞給'shuffle()'。 注意:您的代碼中還存在很多其他問題。所以這只是第一個。但繼續堵塞!當我們在學習時,我們曾經在一起。 – StarPilot 2013-04-03 20:22:54

回答

1

shuffle(deck[52])取陣列deck的第53元件並傳遞到shuffle。改爲嘗試shuffle(deck)

還要注意,C數組是基於零的,所以有效索引是[0..51]。 deck[52]超出了你的數組的末尾;讀取或寫入會導致未定義的行爲,包括覆蓋其他變量的內存或崩潰。

0

數組基於C語言,因此desk [52]是超出數組長度的數組。

0
  1. 洗牌(甲板[52])--->通過此要傳遞甲板 的第53元件的地址(你可以看到,從2:5:注:預期「詮釋*」,但參數是'int')

  2. 如果要發送完整數組,只需將數組名稱作爲函數參數 即可。洗牌(甲板)

    因爲使用`洗牌關於荷姆斯

相關問題