gpt4 book ai didi

c - 如何在 C 中使用指针传递信息

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:04 25 4
gpt4 key购买 nike

首先,很抱歉问了这么基础的问题,但我无法使这段代码正常工作,因为我缺乏关于指针的知识。

让我们开始吧,我有这个游戏结构:

typedef struct{
float x;
float y;
int theres_prize;
int is_intersection;
int is_wall;
}Square;

typedef struct{
int points_to_win;
Square sqr[14][14];
}Board;

我在 main 中创建了 Board brd; 并在用户想要开始播放时继续调用此函数:

NewGame(brd);

这是什么:

void NewGame(Board *brd){

char map;
printf("Default map (y/n)? ");
scanf("%c",&map);
if(map=='y'){
LoadDefault(brd);
}
}

LoadDefault 中,我需要用游戏中每个方 block 的信息填充brd。我将在整个游戏中使用这些信息,这就是为什么我在 main 中创建变量 brd 的原因,因为我需要将它传递给我将在那里创建的其他函数。 (这就是为什么我也需要使用指针)

void LoadDefault(Board *brd){
brd.sqr[10][10].theres_prize=1;
printf(brd.sqr[10][10].theres_prize=1);
}

尝试打印 LoadDefault 中的一些信息以查看其是否有效,但由于指针问题而无效。我想知道如何通过这些函数正确传递 brd,所以一旦我将它填入 LoadDefault,我就可以在 main 中使用它。

最佳答案

如果我没理解错的话,这只是一个语法问题。由于 brd 是一个指针,您必须取消引用它才能到达 sqr:

void LoadDefault(Board *brd){
brd->sqr[10][10].theres_prize=1;
printf("%d", brd->sqr[10][10].theres_prize); // edit: added format specifier string
}

编辑:另一个错误可能是由于 brd 是结构而不是指向结构的指针,您在其中调用 NewGame。您可能只需要传递地址,而不是结构本身:

NewGame(&brd);

坚持下去,你会得到它!这是一篇非常好的、简洁的文章,包括一个视频链接,可能会有帮助:

http://cslibrary.stanford.edu/106/

关于c - 如何在 C 中使用指针传递信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28387054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com