realloc的值不会传递回调用函数

时间:2016-02-09 17:58:57

标签: c arrays pointers realloc

我正在编写一个简单的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函数设置的值。我无法理解为什么。请帮忙。

1 个答案:

答案 0 :(得分:2)

首先得到原始指针:(*array)然后将其编入索引:(*array)[i]

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