2017-05-05 3 views
0

Ich habe Datenstruktur, die ich für eine verknüpfte Liste verwende, aber ich kann den Wert jedes Knotens nicht drucken. Ich bekomme nur exited with non-zero status. Hier ist der Code:Problem beim Drucken von Wert von Strukturelement

#include <iostream> 

using namespace std; 

struct ListNode { 
    int val; 
    ListNode *next; 
    ListNode(int x) : val(x), next(NULL) {} 
}; 


int main() 
{ 
    ListNode* l1; 
    l1->val = 1; 

    cout << l1->val << endl; 

    return 0; 
} 
+2

Es ist ein Zeiger, der nichts zeigt. Entweder erstellen Sie einen 'ListNode' mit' new' oder nehmen Sie das '*' und lassen Sie es stapelbasiert werden. –

+2

Ihr Compiler sollte Sie warnen, den Zeiger vor der Initialisierung zu verwenden. Wenn dies nicht der Fall ist, erhöhen Sie die Warnstufe! – gavinb

Antwort

4

l1 ist ein nicht initialisierter Zeiger; Bevor Sie einen Zeiger verwenden, müssen Sie ihn auf ein gültiges Objekt zeigen:

#include <iostream>               

using namespace std;               

struct ListNode {                
    int val;                 
    ListNode *next;               
    ListNode(int x) : val(x), next(NULL) {}         
};                   


int main()                 
{                    
    ListNode* l1 = new ListNode(0); // allocate memory      
    l1->val = 1;                

    cout << l1->val << endl;             

    delete l1; // deallocate memory           

    return 0;                 
}