【发布时间】:2022-01-15 23:11:24
【问题描述】:
我想将我的动态数组的前半部分复制到同一数组的后半部分,但这里的输出是从 ptr[100] 到 ptr[200] 9.90。我想我编码的一切都很好,但我不知道问题出在哪里。你能帮帮我吗?
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int i;
int j;
double * ptr = calloc(100, sizeof(double));
if (ptr == NULL)
return 0;
for(i = 0; i < 100; i++) {
ptr [i] = i / 10.0;
}
for(i = 0; i < 100; i++) {
printf("ptr[%d] = %.2f\n", i, ptr[i]);
}
if (realloc(ptr, 200) == NULL)
return 0;
for (i = 0; i < 100; i++)
for (j = 100; j < 201; j++)
ptr [j] = ptr[i];
for (j = 100; j < 201; j++)
printf("ptr[%d] = %.2f\n", j, ptr[j]);
return 0;
}
【问题讨论】:
-
realloc(ptr, 200)应该是realloc(ptr, 200 * sizeof *ptr) -
我试过了。它不工作
标签: c memory dynamic allocation