2016-02-09 16 views
-1

我正在編寫一個簡單的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;    
} 

什麼功能添加應該做的是,把給定值在陣列的給定點如果數組不夠大,調整陣列。目前,我得到的是分段錯誤。我試過GDB,看來數組變量沒有得到由add函數設置的值。我不明白爲什麼。請幫忙。

+2

這已被問了很多次。有人請找到一個副本。 – 2501

+1

你需要學習如何更好地使用GDB;變量分配得很好。此外,你甚至不會調用'realloc',因爲它在'size' = 1時崩潰。 –

+0

@ 2501對不起,如果它是重複的。由於我的問題非常具體,因此很難找到答案。 – user5393678

回答

2

首先你原來的指針:(*array)然後你建立索引:(*array)[i]

運算符[]比運算符的提取優先級高。

+0

謝謝!我用這個浪費了一個下午 – user5393678