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



  • Man sollte nur darauf aufpassen, dass hier

    int* a, b, c;
    

    nur a ein Pointer ist und b und c nicht.
    Darum mache ich es immer an der Variablen hin.



  • Unregistrierter schrieb:

    Man sollte nur darauf aufpassen, dass hier

    int* a, b, c;
    

    nur a ein Pointer ist und b und c nicht.
    Darum mache ich es immer an der Variablen hin.

    PS: ich meine damit nicht das Missverständniss int* a, b; zB

    😉



  • Ich persöhnlich finde das

    int *a
    

    aber schöner und besser.

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



  • 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?



  • Im Linux Kernel wird int *p; benutzt, ebenso in der Winapi (und wahrscheinlich auch in Windows selbst).
    Es spricht also durchaus für "int *p" wenn solch große Projekte diese Konvention verwenden.



  • Linux-Entwickler schrieb:

    Im Linux Kernel wird int *p; benutzt, ebenso in der Winapi (und wahrscheinlich auch in Windows selbst).
    Es spricht also durchaus für "int *p" wenn solch große Projekte diese Konvention verwenden.

    in der winapi ist das doch INT_PTR, oder? 😉

    ich sehe es als <typ> <name> an, und der Typ ist nun einmal "Zeiger auf int", also

    int* ptr;
    


  • Xantus schrieb:

    Linux-Entwickler schrieb:

    Im Linux Kernel wird int *p; benutzt, ebenso in der Winapi (und wahrscheinlich auch in Windows selbst).
    Es spricht also durchaus für "int *p" wenn solch große Projekte diese Konvention verwenden.

    in der winapi ist das doch INT_PTR, oder? 😉

    Nicht für alles bzw. überall werden diese Dinger benutzt, gerade bei DWORD steht eigentlich immer DWORD *nSize oder sowas.
    Wobei ich mich jedes mal beim Programmieren frage wer auf die dumme Idee kam diese typedefs in Großbuchstaben zu schreiben, das nervt beim Tippen einfach nur.



  • könnten theoretisch auch folgendes benutzen...

    int * p;
    


  • Skym0sh0 schrieb:

    könnten theoretisch auch folgendes benutzen...

    int * p;
    

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

    #define PINT int*
    

    Dann schreib ich einfach

    PINT p;
    

    und muss mir um so Leerzeichensetzung keine Gedanken machen und sehe sofort, dass es ein Int-Zeiger ist 🙂



  • 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)


Anmelden zum Antworten