[英]Warning - assignment from incompatible pointer type
首先我很抱歉,如果你努力理解我。 我的英語不是很好。 我正在學習計算機工程,這是我的第一年。 我正在學習 C 編程。 我想為紙牌游戲編寫代碼,但我無法解決我使用指針遇到的這個問題。
const char cards[][30] = {"spades_one", ...};
char is_it_used[][1] = {"1",...};
char player_1_deck[7][30], player_2_deck[7][30], player_1[1][20], player_2[1][20];
char *s1, *s2, *s3, *s4;
s1 = &cards[0];
s2 = &is_it_used[0];
s3 = &player_1_deck[0];
s4 = &player_2_deck[0];
由於 s1、s2、s3 和 s4,我收到“從不兼容的指針類型賦值”警告。 我該怎么辦? 我該如何解決這個問題? 請幫我...
您遇到的問題是因為您定義的四個數組是二維的。
這就是為什么你有錯誤。
const char cards[][30] = {"spades_one", ...}
char is_it_used[][1] = {"1",...}
char player_1_deck[7][30], player_2_deck[7][30], player_1[1][20], player_2[1][20];
char *s1, *s2, *s3, *s4;
s1 = &cards[0][0];
s2 = &is_it_used[0][0];
s3 = &player_1_deck[0][0];
s4 = &player_2_deck[0][0];
以上應該工作
但這真的取決於你想用s1
、 s2
等實現什么。
可能更合適
s1=player_1_deck[0];
例如或
s1=player_1_deck[2];
等等。
使s1
指向一張單獨的卡片
在這些賦值語句中
s1 = &cards[0];
s2 = &is_it_used[0];
s3 = &player_1_deck[0];
s4 = &player_2_deck[0];
左操作數具有 char * 類型,而右操作數具有相應的類型char ( * )[30]
, char ( * )[1]
, char ( * )[30]
, char ( * )[30]
並且沒有從類型char *
到列出的指針之一的類型的隱式轉換。
如果你想讓指針 s1, s4 指向你可以寫的多維數組的第一個字符串的第一個字符
s1 = cards[0];
s2 = is_it_used[0];
s3 = player_1_deck[0];
s4 = player_2_deck[0];
注意這個數組
char is_it_used[][1] = {"1",...};
不包含字符串。 事實上,這個聲明等價於
char is_it_used[][1] = { '1',...};
^^^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.