pointer struktur



  • Hi,
    wenn man eine Struktur mit pointern macht

    struct a1 {
    	int *b;
    	int *c;
    } d1;
    

    dann behandelt man diese ja normal:

    d1.b = &dummy; /*Adresse von dummy*/
    *d1.b = 45; /*dummy wird zu 45*/
    

    Aber was macht man mit Pointer-Strukturen?:

    struct a1 {
    	int b;
    	int c;
    } *d1;
    

    Und hiermit?:

    struct a1 {
    	int *b;
    	int *c;
    } *d1;
    

    Danke!



  • strr schrieb:

    struct a1 {
    	int b;
    	int c;
    } *d1;
    

    dl->b = 1;
    dl->c = 1;

    oder

    (*dl).b = 1;
    (*dl).c = 1;

    strr schrieb:

    struct a1 {
    	int *b;
    	int *c;
    } *d1;
    

    dl->a = &dummy;
    *(dl->b) = 45;

    oder

    (*dl).b = &dummy;
    *(*dl).c = 45;

    🤡



  • Ajaw schrieb:

    strr schrieb:

    struct a1 {
    	int b;
    	int c;
    } *d1;
    

    dl->b = 1;
    dl->c = 1;

    oder

    (*dl).b = 1;
    (*dl).c = 1;

    Also sind die Komponenten der Struktur keine Pointer?
    Und was ist dann der Unterschied zwischen Strukturen und 'Pointer-Strukturen' (struct a1 *b; )?

    *PS: Funktioniert beides, oder nur das zweite, weil beim ersten die Deklaration nur für die beiden Variablen gilt?:

    struct a{
    int b;
    } ew, re;
    /*OdEr*/
    struct a{
    int b;
    };
    
    int main() {
    struct a c;
    }
    

    Und es resultiert 1. struct ew, re und c und beim zweiten nur struct c?

    struct {
    int a;
    } b, c, d, e;
    

    Gilt nur für b, c, d und e?

    Und wie funktionieren structs mit typedef?
    Hat das Vorteile oder Nachteile?
    Danke*
    Danke 🙂



  • 😕 Nochmal auf Deutsch bitte.

    Wenn kein Sternchen vorm Bezeichner steht, isses auch kein Pointer. Der Unterschied:
    bei struct foo a; flackt die komplette Struktur auf dem Stack und bei struct foo* b; liegt nur ein Zeiger auf dem Stack.



  • Und was genau bedeutet das für das Programm/den Programmierer?

    "Und wie funktionieren structs mit typedef? Hat das Vorteile oder Nachteile?"

    Und was ist damit? 😕


Anmelden zum Antworten