gpt4 book ai didi

c - 将结构传递给函数

转载 作者:行者123 更新时间:2023-11-30 18:52:46 25 4
gpt4 key购买 nike

所以我试图将我的结构传递给函数,并且我还尝试将我的变量分配给该结构,但这似乎不起作用。我也不知道这是怎么回事。

这就是我的代码的样子:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ACE 1;
#define CardSize 52
#define colors 4

struct MyCards {
int *cards;
char *color[4];
};

void count(struct MyCards record);

int main() {
struct MyCards record;
count(record);

system("pause");
return 0;
}

void count(struct MyCards record) {
int i, j, f;
// I actually want to put this variable and the values into the struct, how do i do it?
char *color[4] = { "Diamon", "Heart", "Spade", "Clubs" };
record.cards = malloc(CardSize * sizeof(int));
for (f = 0; f < 4; f++) {
for (i = 0; i < 13; i++) {
record.cards[i] = (i % 13) + 1;
printf("%d of %s\n", record.cards[i], color[f]);
}
}
}

正如您所看到的,我注释掉的东西,我也想放置该变量以及我分配给它的值,但我不知道该怎么做,也希望那里有一些帮助。

最佳答案

C 使用值传递。 count 中的 record 是与 main 中的 record 不同的变量 - 调用该函数时会创建一个副本。

如果您希望 main 查看更改,您需要返回更改的对象(在这种情况下,您不会首先将其传入,在本示例),或者使用通过传递指向对象的指针来实现的引用传递。

返回对象如下所示:

struct MyCard count(void)
{
struct myCard record;
// ... do stuff with record ...
return record;
}

通过引用传递看起来像:

void count(MyCard *p_record)
{
// ... do stuff with (*p_record)
}
<小时/>

您还希望将 record.color[f] = color[f]; 作为 f 循环的第一行。并且(正如您上次发布此代码时所讨论的)您应该使用 stringchar const *,而不是 char *

关于c - 将结构传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34405051/

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