Die Mathe-Redaktion - 23.11.2017 17:43 - Registrieren/Login
Auswahl
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden oder den Newsletter bestellen.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 709 Gäste und 17 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C: Verkettete Listen
Druckversion
Druckversion
Autor
Universität/Hochschule J C: Verkettete Listen
Oggel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 29.12.2015
Mitteilungen: 100
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2017-11-02 21:10


Hi Leute,

ich bekomme bei folgendem Code immer ein Speicherzugriffsfehler und ich verstehe einfach nicht wieso. Ich habe nur den relevanten Code eingefügt. In der Main rufe ich addNote mit dem entprechenden Wert auf. Und ich habe es soweit rausgefunden, dass der Fehler bei der letzten Zeile
testList->begin = newNode;
auftritt:
C
struct node{
    int value;
    struct node *next;
};
 
struct List{
    struct node *begin;
    struct node *end;
};
 
struct List *testList = NULL;
 
void addNode(int value){
 
    //neuer Knoten
    struct node *newNode = NULL;
    //reserviere Speicher
    newNode = malloc(sizeof(struct node));
 
    //Setze Wert
    newNode->value = value;
    //Nachfolger
    newNode->next = NULL;
 
 
    testList->begin = newNode;
}

Ich muss dazu sagen, dass ich erst vor Kurzem mit C angefangen bin und noch nicht viel Ahnung habe. Ich hoffe ihr könnt mir helfen :-)

Danke schonmal :)





  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 1725
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2017-11-02 21:13


testList ist ein Nullzeiger, aber du dereferenzierst ihn in dieser Zeile trotzdem.


-----------------
⊗ ⊗ ⊗



  Profil  Quote  Link auf diesen Beitrag Link
Oggel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 29.12.2015
Mitteilungen: 100
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2017-11-02 21:26


Ahh. Das heißt ich muss erst Speicher reservieren:
C
struct List *testList = NULL;
testList = malloc(sizeof(struct List));
 
void addNode(int value){
 
    //neuer Knoten
    struct node *newNode = NULL;
    //reserviere Speicher
    newNode = malloc(sizeof(struct node));
 
    //Setze Wert
    newNode->value = value;
    //Nachfolger
    newNode->next = NULL;
 
 
    testList->begin = newNode;
}

Allerdings funktioniert das nur wenn ich die Reservierung in der Methode addNote mache:
C
void addNode(int value){
    struct List *testList = NULL;
    testList = malloc(sizeof(struct List));
    //neuer Knoten
    struct node *newNode = NULL;
    //reserviere Speicher
    newNode = malloc(sizeof(struct node));
 
    //Setze Wert
    newNode->value = value;
    //Nachfolger
    newNode->next = NULL;
 
    testList->begin = newNode;

Wie kommt das?  confused



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 1725
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2017-11-02 21:30


Anweisungen (wie diese Zuweisung) können nur in Funktionen stehen.



  Profil  Quote  Link auf diesen Beitrag Link
Oggel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 29.12.2015
Mitteilungen: 100
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2017-11-02 21:32


Ahh also kann ich Speicherreservierungen nur in Funktionen machen. Dankeschön :-)



  Profil  Quote  Link auf diesen Beitrag Link
Oggel hat die Antworten auf ihre/seine Frage gesehen.
Oggel hat selbst das Ok-Häkchen gesetzt.
Oggel wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2017 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]