2017-12-04 12 views
0

structを使用するのは非常に新しいので、表示しようとしているコードの一部が間違っている可能性があります。エラーが発生しています。私はstructを使ってスタックを真似しようとしているコードを書いています。私は現在pushInt()のスタックを指す関数を作成しようとしていますstructといくつかはintです。これは私がpuchInt()機能を持っているコードです:構造体セグメントのエラー:11.最初にnullに初期化された構造体の値を再割り当てできません

Stack *pushInt(Stack *stack, int value) 
    { 
     stack->intTop = TRUE; 
     stack->data.intValue = value; 
     stack->next = NULL; 

     return stack; 
    } // end pushInt 

は、これは私がstact structを定義するために使用するコードです。

int main() 
    { 
     Stack *theStack = NULL; 

     //getInteger function just gets user input 
     int pushValue = getInteger("value to push onto stack: "); 
     theStack = pushInt(theStack, pushValue); 
    } 
+0

ノードのメモリを割り当てる必要があります。 –

+0

@RetiredNinja変数を再割り当てする前に、 'pushInt()'関数でmallocを使ってこれを行うのですか? – theGreatOne

答えて

0

theStack = pushInt(theStack、pushValue:

struct StackNode 
    { 
     int intTop; 

     union { 
      int intValue; 
      char stringValue[MAX_STRING_LENGTH]; 
     } data; 

     struct StackNode *next; 
    }; 

これは私がコードの機能をテストするために実行する主な機能は次のとおりです。likedListのように動作する自己参照構造体であります);

NULLポインタ(NULLで初期化されたtheStack)が渡されます。したがって、pushInt関数内でNULLポインタを参照解除し、したがってsegフォルトを参照します。

変数をメモリに割り当てる必要があります。theStack

関連する問題