【发布时间】:2013-12-26 17:09:52
【问题描述】:
我在使用 C 中的 malloc 和 realloc 函数并使用 2 个单独的函数在其中保存值时遇到了一些麻烦
请注意,我最近才开始使用 c,并且代码中可能存在多个错误,但我的主要关注点是将值保存到结构中
我需要能够将多个值保存到单个数组中。
这些是我的功能
int ArrayCreate() {
int *pt;
pt = (ASet *)calloc(1,sizeof(ASet));
pt == NULL;
return *pt;
}
//possible 2nd *
void ArrayAdd(ASet **arrayStruct, int x) {
ASet *pt = NULL;
*arrayStruct=realloc(*arrayStruct,1*sizeof(ASet));
pt = arrayStruct;
*arrayStruct->value = x;
free(pt);
}
我主要有
ASet *arr_pt = NULL;
创建数组
printf("a new array is created \n");
arr_pt = ArrayCreate();
break;
向数组中添加一些东西
printf("Enter integer \n");
scanf("%d",&x);
ArrayAdd(arr_pt,x);
while (getchar() != '\n') {
continue;
}
break;
也为了测试我添加了这个,但我不确定
void ArrayShow(ASet *arrayStruct) {
ASet *pt = arrayStruct;
//printf("%d \n", pt[0].value);
printf("%d \n", pt[1].value);
printf("%d \n", pt[2].value);
printf("%d \n", pt[3].value);
printf("%d \n", pt[4].value);
}
我只需要知道如何使用 realloc 和 calloc 正确保存,但由于某种原因 pt[0] 被忽略并且 p[1] 之后的任何东西都是垃圾
【问题讨论】:
-
there are multiple bugs in the code是什么意思? -
那么精益求精如何使用调试器。那不是我们的工作。
-
更具体地说:您期望的输出是什么,您得到的结果与此有何不同?
-
请把整个main函数改写成一个块!并使用一些 cmets!
-
我只需要知道如何使用 realloc 和 calloc 正确保存但由于某种原因 pt[0] 被忽略并且 p[1] 之后的任何东西都是垃圾