Frage zu typedef bei Strukturen



  • SeppJ schrieb:

    typedef struct 
    {
       int    sv_nummer;
       char vorname[20], name[20];
       char telnr[15];
       int    alter;
    } Person;    // Person ist nun ein anderer Name für dieses struct
    
    int main(void)
    {
      Person max, moritz;   // Zwei Variablen vom Typ Person
    
      max.alter = 25;
      moritz.alter = max.alter + 2;
    
      return 0;
    }
    

    Ist der Vorteil nun klar?

    Bin ich im falschen Film?? Oder ich habe keine Ahnung von C...

    Ist die Referenz auf ein Feld in einer typedef struct Definition nicht

    ->
    also:
    max->alter
    

    😕



  • confused... schrieb:

    Ist die Referenz auf ein Feld in einer typedef struct Definition nicht

    ->
    also:
    max->alter
    

    😕

    1. In C gibt es keine Referenzen, sondern Zeiger.
    2. max ist kein Zeiger, sondern eine direkte Instanz der struct. Dann braucht man den . Operator.



  • icarus2 schrieb:

    confused... schrieb:

    Ist die Referenz auf ein Feld in einer typedef struct Definition nicht

    ->
    also:
    max->alter
    

    😕

    1. In C gibt es keine Referenzen, sondern Zeiger.
    2. max ist kein Zeiger, sondern eine direkte Instanz der struct. Dann braucht man den . Operator.

    ok, und wann benutzt man dann

    ->
    

    😕



  • confused... schrieb:

    ok, und wann benutzt man dann

    ->
    

    😕

    Wenn man einen Pointer hat.

    Hier ein Beispiel:

    int main()
    {
    	Point p1; // Eine Variable vom Typ Point
    	Point* p2 = malloc(sizeof(*p2)); // p2 ist ein Zeiger, der auf eine Variable vom Typ Point zeigt
    
    	p1.x = 3;
    	p1.y = 7;
    
    	p2->x = 3;
    	p2->y = 7;
    }
    


  • icarus2 schrieb:

    confused... schrieb:

    ok, und wann benutzt man dann

    ->
    

    😕

    Wenn man einen Pointer hat.

    Hier ein Beispiel:

    int main()
    {
    	Point p1; // Eine Variable vom Typ Point
    	Point* p2 = malloc(sizeof(*p2)); // p2 ist ein Zeiger, der auf eine Variable vom Typ Point zeigt
    
    	p1.x = 3;
    	p1.y = 7;
    
    	p2->x = 3;
    	p2->y = 7;
    }
    

    Korrekt, wobei den malloc braucht man nicht unbedingt....

    Andererseits wirst Du fast immer die "*" (also Pointer) Variante bei typedef structs finden....

    Ich wünsche allen hier ein schönes Osterfest....


  • Mod

    confused... schrieb:

    Andererseits wirst Du fast immer die "*" (also Pointer) Variante bei typedef structs finden....

    Das zweifle ich mal ganz stark an.



  • #include <stdio.h>
    #include<stdlib.h>
    typedef struct _gugu
    {
    	int		blabla;
    } gugu;
    void print_hugo1 (gugu hugo1)
    {
    	printf("%d\n" , hugo1.blabla);
    	return;
    }
    void print_hugo2 (gugu *hugo2)
    {
    	printf("%d\n" , hugo2->blabla);
    	return;
    }
    int main()
    {  
        gugu	hugo1;
        gugu	*hugo2 = malloc(sizeof(*hugo2));
        hugo1.blabla = 100;
        print_hugo1(hugo1);
        hugo2->blabla = 200;
    	print_hugo2(hugo2);
        return 0;
    }
    

    Das C ist schon ne lustige Sprache.... 🙂



  • confused... schrieb:

    [...]
    Das C ist schon ne lustige Sprache.... 🙂

    Wieso?



  • confused... schrieb:

    #include <stdio.h>
    #include<stdlib.h>
    typedef struct _gugu
    {
    	int		blabla;
    } gugu;
    void print_hugo1 (gugu hugo1)
    {
    	printf("%d\n" , hugo1.blabla);
    	return;
    }
    void print_hugo2 (gugu *hugo2)
    {
    	printf("%d\n" , hugo2->blabla);
    	return;
    }
    int main()
    {  
        gugu	hugo1;
        gugu	*hugo2 = malloc(sizeof(*hugo2));
        hugo1.blabla = 100;
        print_hugo1(hugo1);
        hugo2->blabla = 200;
    	print_hugo2(hugo2);
        return 0;
    }
    

    Das C ist schon ne lustige Sprache.... 🙂

    Wo ist die Prüfung, ob malloc() fehlschlägt ?! Wo ist das free() ?!



  • hugo2 schrieb:

    Wo ist die Prüfung, ob malloc() fehlschlägt ?! Wo ist das free() ?!

    Das ist doch alles überbewertet. 🙂
    malloc() geht ja in den meisten Fällen gut und free()... Naja, der Speicher wird immer größer und billiger. 🤡


Anmelden zum Antworten