小编Nat*_*edy的帖子

realloc不复制第一个索引

我在使用malloc/realloc命令和数组时遇到了一些麻烦.我已经创建了一个包含一些整数的小数组,并尝试通过使用realloc扩展大小并添加值来为其添加一个值,但是当我这样做时,0索引的值不会被保留并被视为垃圾.

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

int main(){
        int n;
        printf("Enter size of array\n");
        scanf("%d",&n);
        int *A = malloc(n*sizeof(int));
        for(int i = 0; i < n; i++){
                A[i] = i + 1;
        }
        *A = realloc(A, sizeof(A)+ sizeof(int));
        A[n] = 1234;
        for(int i = 0; i < n + 1; i++){
                printf("%d\n",A[i]);
        }


        return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,会发生这种情况:

Enter size of array
5
14643216
2
3
4
5
1234
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么数组的0索引得到这个值而不是1?

c malloc realloc

2
推荐指数
1
解决办法
74
查看次数

标签 统计

c ×1

malloc ×1

realloc ×1