重新分配的值未传回调用函数

realloc'ed value not passed back to the calling function

我正在编写一个简单的 C 程序以了解 C 编程。这是我的代码:

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

    void add(int** array, int size, int value)
     {
      if(!*array)
         *array = calloc(4,sizeof(int));
     if(size > 3)
     {
         *array = realloc(*array,6*sizeof(int));
     }
     *array[size] = value;  
 }

    int main()
    {
     int* numbers = NULL;
     int i;
     for(i=0; i<6; i++)
     {
         add(&numbers,i,i);
     }
     for(i=0; i<6; i++)
     {
         printf("%d\n",numbers[i]);
     }
     return 0;              
 }

函数add应该做的是,把给定的值放在数组的给定点,如果数组不够大,调整数组的大小。目前,我得到的是分段错误。我试过 GDB,似乎数组变量没有得到 add 函数设置的值。我不明白为什么。请帮忙。

首先你得到原始指针:(*array)然后你索引它:(*array)[i].

运算符 [] 的优先级高于取消引用 * 运算符。