int* a; oder int *a; Gibts da einen Unterschied?



  • Ich bevorzuge auch int *a; aus dem Grund den Unregistrierter schon nannte.
    Inhaltlich ist es egal... wie ziemlich viele Leerzeichen in C/C++ 😃

    @Shade Of Mine: Es gehört ja eben nicht zu int sondern in erster Linie zum p . Sonst waren bei int* a, b, c; ja alle drei int * .



  • Ich bin bis heute unentschlossen und mach es mir daher ganz einfach:

    int*a;
    


  • lagalopex schrieb:

    @Shade Of Mine: Es gehört ja eben nicht zu int sondern in erster Linie zum p . Sonst waren bei int* a, b, c; ja alle drei int * .

    ist das so?

    warum kann ich dann
    typedef int* int_ptr;
    machen?

    und schon gehört es zum typen.
    sehr verwirrend das alles...

    auch bei templates ist das * plöztlich beim typen.

    uU gibt es da keine festen regeln wo das * hin gehört?



  • Windows_Progger schrieb:

    Ich persönlich habe ja einen Header mit Einträgen wie:

    #define PINT int*
    
    #define PINT int* 
    
    int main()
    {
    	PINT a, b;
    
    	*a;
    	*b;
    
    	return 0;
    }
    

    Dann erklär mal mit welcher Begründung das nicht gehen soll 🙄

    Shade Of Mine schrieb:

    warum kann ich dann
    typedef int* int_ptr;
    machen?

    und schon gehört es zum typen.
    sehr verwirrend das alles...

    auch bei templates ist das * plöztlich beim typen.

    uU gibt es da keine festen regeln wo das * hin gehört?

    Ein typedef erstellt ja auch quasi einen neuen Datentyp.



  • ich bevorzuge int* a ...

    und nachdem ich int* a, b, c; eh nie in meinem Leben schreiben werde, kann mir das auch egal sein, dass hier nur a ein pointer ist

    so kann ich es auch einfacher von Derefenzierungen unterscheiden



  • Ich mach das ganze immer so:

    int* p;
    int zahl;
    int* zweitesp;
    

    Pointer immer einzeln! Ne Liste finde ich auch immer unübersichtlich.



  • lagalopex schrieb:

    Windows_Progger schrieb:

    Ich persönlich habe ja einen Header mit Einträgen wie:

    #define PINT int*
    
    #define PINT int* 
    
    int main()
    {
    	PINT a, b;
    
    	*a;
    	*b;
    
    	return 0;
    }
    

    Dann erklär mal mit welcher Begründung das nicht gehen soll 🙄

    Shade Of Mine schrieb:

    warum kann ich dann
    typedef int* int_ptr;
    machen?

    und schon gehört es zum typen.
    sehr verwirrend das alles...

    auch bei templates ist das * plöztlich beim typen.

    uU gibt es da keine festen regeln wo das * hin gehört?

    Ein typedef erstellt ja auch quasi einen neuen Datentyp.

    Lol, du musst da ja auch

    PINT a, *b;
    

    schreiben 💡



  • lagalopex schrieb:

    Ein typedef erstellt ja auch quasi einen neuen Datentyp.

    und dann gehört das * plötzlich zum typen?

    wenn ich ein typeof auf einen int* mache, bekomme ich int* zurück.

    also so ganz fehlerfrei ist deine argumentation nicht.



  • natürlich ist int nicht gleich int * , aber bei der Definition, um die es hier nunmal geht, ist * nur für den folgenden Variablennamen gültig. Gehört somit zu dem Namen und nicht zu dem Datentyp.

    Meine Meinung, du kannst es natürlich machen wie du es willst.

    und damit basta 🕶



  • Der * gehört zum Typen dazu, aber die Sprache ist in der Verwendung leider Inkonsequent, was "int* a,b;" ja wunderbar zeigt. Ich kann mir auch nicht vorstellen warum man das so vereinbart hat, denn es lädt Fehler geradezu ein, wenn man zwei völlig verschiedene Variablen in dem selben Ausdruck deklarieren kann.



  • Jetzt weiß ich auch mal was...

    int *pointer;
    

    ist klassisches C. Während

    int* pointer;
    

    erst seit C++ möglich ist.

    Quelle: "C++ von A bis Z" von Jürgen Wolf (Galileo Computing)



  • Buch bitte weglegen! Am besten ganz weit weg. DANKE!



  • tippgeber2 schrieb:

    Buch bitte weglegen! Am besten ganz weit weg. DANKE!

    Meinst du es ist so schlimm?



  • Shade Of Mine schrieb:

    pyromania schrieb:

    So weiß man gleich, dass der Zeiger zu a 'gehört' und nicht zu dem int.

    und ich finde
    int* p;
    besser, weil man da weiss dass * zu int gehoert und nicht zu p.

    interessant, nicht?

    naja, aber bei sowas:

    int* a, b, c
    

    _könnte_ man auch auf die idee kommen, dass int* als typ für alle gilt, während man bei

    int *a, b, c
    

    meiner meinung nach besser sieht, dass nur a ein zeiger auf ein int ist.



  • Wolfsherz schrieb:

    tippgeber2 schrieb:

    Buch bitte weglegen! Am besten ganz weit weg. DANKE!

    Meinst du es ist so schlimm?

    Sagen wir es so, als Schrankunterlage wenn ein Bein fehlt, als Grillanzünder oder ähnliches ist es sicher recht gut.



  • Jetzt mal im Ernst, ist das Buch wegen dieser Aussage schlecht, oder generell?



  • Das Buch ist schon in Ordnung, da es doch viel nützliches enthält. Man sollte über solche Kleinigkeiten hinwegsehen, wenn man die Sprache kannt ist einem das ja klar.

    C Ent-Packt ist zum Beispiel auch ein tolles Buch, da dort sehr sehr viel behandelt wird, aber man sollte halt C schon können, damit man über falsche Tatsachen hinwegsieht.



  • pyromania schrieb:

    naja, aber bei sowas:

    int* a, b, c
    

    _könnte_ man auch auf die idee kommen, dass int* als typ für alle gilt, während man bei

    int *a, b, c
    

    meiner meinung nach besser sieht, dass nur a ein zeiger auf ein int ist.

    gleiche Variablen mit einem Befehl zu deklarieren kann man ja noch durchgehen lassen (auch wenn ich es für schlechten Stil halte), aber sowas kann nicht ernsthaft von jemanden so praktiziert werden



  • aber sowas kann nicht ernsthaft von jemanden so praktiziert werden

    Naja. Solange es möglich ist, wird es auch gemacht. 😉



  • Früher hab ich auch immer int *a; geschrieben, aber inzwischen hab ich mich umgewöhnt. Der Grund ist auch, weil man dann schön den zusammengehörenden Typen sieht. Beispielsweise initialisiere ich Referenzen auch mit int& a = b; . Diese Schreibweise grenzt auch noch zusätzlich vom Dereferenzierungs- bzw. Adressoperator ab. Und mehrere Pointer-Deklarationen in einer Zeile kommen bei mir sowieso praktisch nie vor.

    Und int * a; oder int*a; finde ich ziemlich übel, das sieht für mich schon eher nach Multiplikation respektive nach AND-Operator bei & aus...

    BTW:

    Windows_Progger schrieb:

    Ich persönlich habe ja einen Header mit Einträgen wie:

    #define PINT int*
    

    Was spricht denn gegen Typedefs? Und im Übrigen finde ich PINT nicht übersichtlicher als int* , es wird nicht mal kürzer geschrieben.


Anmelden zum Antworten