2017-10-28 183 views
0

我试图做一个程序,对于给定的int value保持分隔量的数组:
int amount_of_dividers和那些分隔的列表:int* dividers添加指针的指针

这是代码:

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

typedef struct{ 
    int value; 
    int amount; 
    int* dividers; 
} Divide; 

int main(){ 
Divide ** tt; 
read_dividers(tt,5); 
} 


/* the functions "amount_of_dividers(int g)" and "dividers_of(int g, int amount)" 
used in void read_divider are working properly, they are not needed for this question */ 

void read_divider(Divide *g){ 
    scanf("%d",&(g->value)); 
    g->amount = amount_of_dividers(g->value); 
    g->dividers = dividers_of(g->value,g->amount); 
} 


/* assuming that read_divider works, what causes read_dividerS to crash? */ 

void read_dividers(Divide ** t, int amount){ 
    int i = 0; 
    t = malloc(amount*sizeof(Divide*)); 

    for(i = 0;i<amount;i++){ 
     read_divider(t[i]); 
    } 
} 

Read_dividers使用指针**t其中我试图填补这个阵列的每个元件具有一个指针指向一个Divide g变量的阵列。 ():“read_dividers(tt,5)”表示用户给出了5个int,它们被转换为5个Divide结构体。编辑:在这种情况下在main()中输入:“read_dividers(tt,5)”表示用户给出5个int的结构体。 然而,我发现第二个程序崩溃后会发生什么情况int

如果缺少更多信息,请不要犹豫,问问!

+1

什么是你的问题...有什么不工作? – Varun

+0

请提供您正在提供的输入以及您收到的输出与您期望作为输出接收的输出。 – stringsn88keys

+0

@Varun请参阅下面的代码“编辑”,我是新来的这个网站;在尽量缩短问题的同时尽量减少我需要提供的信息。 –

回答

0

您正在将未初始化的t[i]传递给read_dividert应该是指向Divide指针的指针,而不是指向Divide的指针,您可能在第一次通过时刚好幸运,但我怀疑它在第一次通话时失败。