Pointer-struct



  • Tag zusammen,

    struct kunde
    {
    	int kdn_Nr;	
    	char vorName[21];
    	char nachName[21];
    };
    
    main()
    {
    	struct kunde struct_kunde[500]={NULL};
    	struct kunde *arr_kunde[500]={NULL};
    
    	*arr_kunde=struct_kunde;
    	auswahl_1(arr_kunde);
    }
    void auswahl_1(struct kunde *arr_kunde[])
    {
    	int x;
    	for(x=0;x<=500;x++)
    	{
    		if(arr_kunde[x]==NULL)
    		{
    			printf("Kunden-Nummer eingeben: ");
    			scanf("%d",&(arr_kunde[x]->kdn_Nr));fflush(stdin);
    ....
    }
    

    nach der Eingabe der Zahl entsteht immer ein Fehler, hab schon vieles rumprobiert, aber immernoch nix gefunden was wirklich hilft
    hoffe ihr könnt mir da weiterhelfen.
    Bei den Pointern habe ich so einige Probleme 🙂

    gruß



  • Schau mal bei http://cdecl.org nach was deine Definitionen bewirken.

    Du hast einmal ein Array mit 500 Elementen aus struct kunde .
    Und du hast ein Array mit 500 Zeigern auf struct kunde .

    Bei der Zeile 14 *arr_kunde=struct_kunde; bekommt der erste eintrag in dem Zeigerarray die Adresse vom ersten Element des Structarray.
    Und nur der erste Eintrag.

    Spätestens wenn x = 1 ist greifst du auf nicht initialisierten Speicher zu.

    Deine for-Schleife macht übrigens 501 Durchläufe, obwohl du nur 500 Elemente hast.

    Was willst du mit dem arr_kunde überhaupt machen?
    Soll das vielleicht ein einfacher Zeiger sein:

    struct kunde *arr_kunde = NULL;
    

    Dann musst du noch die [] im Paramter von auswahl_1 entfernen, dann sollte das klappen.



  • ich wollte, dass jeder einzelne struct-array einen eigenen Pointer hat, das war die Idee dahinter

    die 500 stammen noch von meinen vorherigen Array [501]

    ich probier das mal aus, danke erstmal



  • Das ist zwar nicht nötig, aber wenn du das unbedingt so willst, dann musst du jedem Zeiger die Adresse zuweisen.

    arr_kunde[0] = &struct_kunde[0];
    	arr_kunde[1] = &struct_kunde[1];
    

    usw.



  • spagetti schrieb:

    ich wollte, dass jeder einzelne struct-array einen eigenen Pointer hat, das war die Idee dahinter

    Dann musst du auch jedem Pointer die Adresse einzeln zuweisen.



  • Achso, habe ich mir schon fast gedacht,
    danke nochmals


Anmelden zum Antworten