2016-07-12 4 views
-2
struct node 
{ 
    int val; 
    struct node *left, *right; 
}; 

// Stack type 

struct Stack 
{ 
    int size; 
    int top; 
    struct node* *array; 
}; 

struct Stack* createStack(int size) 
{ 
    struct Stack* stack = 
     (struct Stack*) malloc(sizeof(struct Stack)); 
    stack->size = size; 
    stack->top = -1; 
    stack->array = 
     (struct node**) malloc(stack->size * sizeof(struct node*)); 
    return stack; 
} 

この声明は何をしていますか?BSTで所定の金額のペアを見つける

stack->array = 
    (struct node**) malloc(stack->size * sizeof(struct node*)); 

どのようなメモリ表現ですか?

+0

['malloc()'と 'C'のファミリの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917)。 –

+0

http://linux.die.net/man/3/malloc私たちはそれが不明であることをお知らせします。 –

答えて

0
stack->array = 
(struct node**) malloc(stack->size * sizeof(struct node*)); 

構造体ノード**(スタックに)ポインタへのポインタを返す

stack->サイズスタック はsizeof(構造体ノード*)の項目の量はサイズでありますノードへのポインタ。

したがって、各ポインタはスタック内の1つの要素を指すポインタの配列を作成します。

+0

だから私はこのwiilのようになると思う: - –

+0

私はあなたの発言を理解していない –

0

上記のステートメントは、struct node *の配列のためのスペース、つまりstruct nodeへのポインタを割り当てます。

この配列の各ポインタは、struct nodeのインスタンスを指すことができます。

関連する問題