簡體   English   中英

警告 - 從不兼容的指針類型賦值

[英]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];

以上應該工作

但這真的取決於你想用s1s2等實現什么。

可能更合適

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.

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