gpt4 book ai didi

c - 使用 malloc 为我的 C 卡组分配内存?

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:18 24 4
gpt4 key购买 nike

我试图用 malloc 分配特定数量的内存,但是当我运行我的程序时,它给出了一些随机字母输出,我看不出它有什么问题.这是我第一次尝试使用malloc,希望您能理解。

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

#define ACE 1
#define CardSize 52

void count();

int main()
{
count();
return 0;

}
void count() {
int *cards;
int i;
cards = (int *)malloc(CardSize*sizeof(int));
for (i = 0; i < 4; i++) {
for (i = 1; i < 14; i++) {
printf("%d\n", cards[i]);
}

}
}

基本上它应该打印出我的卡片数组中的 1-13[52] 卡片,4 次不同的时间。我不明白为什么它不会这样做,希望有人能帮助我。

最佳答案

Basically it should print out 1-13 in my array of cards[52] the cards, 4 different times. I don't understand why it won't do this

在 for 循环中你只使用了一个控制变量 i。对于打印 1-13 你必须赋值,你没有在代码中的任何地方赋值。试试这个代码:

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

#define ACE 1
#define CardSize 52

void count();

int main()
{
count();
return 0;

}
void count() {
int *cards;
int i,j;
cards = malloc(CardSize*sizeof(int));
for (i = 0; i < 4; i++) {
for (j = 0; j < 13; j++) {
cards[i*13+j]=j+1;
printf("%d ", cards[i*13+j]);
}
printf("\n");
}
free(cards);
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 14; j++) {
cards[i*13+j]=j+1;
printf("%d ", cards[i*13+j]);
}

第一步:这里先for循环初始化i=0

第 2 步:第二个 for 循环初始化 j=0

第三步:卡片[i*13+j]=j+1;将执行。这里 j=0i=0 所以 cards[0]=1 将被分配

第 4 步:printf 将在此处打印 cards[i*13+j] 的值 j=0 因此 cards[0 的值] 将被打印。再次循环将转到步骤 2 并递增 j。最多将打印 1-13。

第 5 步:将再次启动第一个 for 循环,并再次打印 1-13 等等,直到第一个 for 循环完成。

备注:Do not cast malloc我建议在动态内存分配给 free memory 之后使用 free() .

你也可以用单循环代替双循环

for (i = 0; i < CardSize; i++) {
cards[i]=(i%13)+1;
printf("%d ", cards[i]);
}

关于c - 使用 malloc 为我的 C 卡组分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34380052/

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