gpt4 book ai didi

c - 数组中的数组

转载 作者:行者123 更新时间:2023-11-30 17:38:36 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来跟踪一系列棒球卡。我正在模拟购买 7 张卡片包,并尝试完成整个收藏(其中包含 500 张独特的卡片)。为此,我假设每张卡的值介于 0-499 之间,并且我创建了一个函数来模拟购买 7 张卡的包,每包中的编号都是唯一的。然而,该程序似乎不起作用并最终崩溃了。一些帮助将不胜感激。这是我的程序(尚未完全完成):

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


int (*newDeck(int n)) //My function to generate a pack of 7 cards
{
int b[n];
int *(deck);
deck = &b;
int rn;


for (int i = 0; i < 7; i++)
{
rn = rand();
deck[i] = rn%500;
}


return deck;
}



int main()
{

int collection[500][2], *deck;

for (int i = 0; i < 500; i++) //Populating the array of the entire collection
{
collection[i][0] = i;
collection[1][1] = 0;
}

srand(time(NULL)); //Calling the function and filling it with random numbers
deck = *newDeck(7);
printf("%d\n", *newDeck(7));



for (int i = 0; i < 7; i++) // Adding the numbers generated to the entire collection
{
(collection[deck[i]][1])++;
}
}


return 0; //There's more to do but that's all I've done so far and it doesn't work
}

最佳答案

newDeck()函数中,替换

int b[n];

int *b = malloc(sizeof(int) * b);

您当前的方法返回在调用 newDeck() 时在堆栈上分配的内存中已初始化的牌组。当函数返回时,该内存将被丢弃。因此,要使其正常工作,您必须调用 malloc() ,它将永久保留内存,直到您稍后对指针调用 free() - 也许是在您完成对牌组的操作后。

关于c - 数组中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22085932/

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