如何在运行时在 C 中增长指针或数组(在编译时不知道结束长度)

问题描述 投票:0回答:1

我想在运行时增长一个数组(不使用 macos 预先定义长度)

我有以下问题

  1. 可以用数组来做吗?
  2. 如果不是,我应该使用指向 int 的指针吗?

我尝试了以下代码(并期待

012
作为输出)但是得到
000

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

int main()
{
    int *arr = NULL; 
    size_t n = 0; 
    for (int i = 0; i < 3; ++i) { 
        arr = realloc(arr, (n + 1) * sizeof *arr); 
        arr[n++] = i; 
        printf("%d", *arr);
    } 
}
arrays c pointers malloc realloc
1个回答
1
投票

OP 大多都有它。

每次只是打印第一个元素。

    // printf("%d", *arr);
    printf("%d", arr[n-1]);

可以用数组来做吗?

没有。在 C 中,数组一旦定义就不能改变大小。

指针分配和引用的内存大小可以改变。

© www.soinside.com 2019 - 2024. All rights reserved.