首先,对不起,如果您正在努力了解我。我的英语不太好。 我正在学习计算机工程,这是我的第一年。我正在学习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,我收到“来自不兼容指针类型的分配”警告。我该怎么办?我该如何解决这个问题?请帮助我...
答案 0 :(得分:1)
您遇到的问题是,因为您定义的四个数组是二维。
这就是为什么您有错误。
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
指向一张单独的卡
答案 1 :(得分:0)
在这些赋值语句中
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',...};
^^^