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



  • Hallo Zusammen,

    ich bin eher in der C-Ecke zuhause. Dort macht es definitv keinen Unterschied, ob ich einen Pointerwie in 1) oder in 2) deklariere. Aber soweit ich mich dunkel erinnern kann macht es in C++ schon einen Unterschied, oder?

    1. int* a;
    2. int *a;

    Danmke schon mal 🙂

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



  • Ist identisch.



  • dunkel erinnern kann macht es in C++ schon einen Unterschied

    Seeehr dunkel.. ^^
    In den wenigsten Fällen in C++ spielt es eine Rolle wo etwas steht. (Solange es nicht zusammengehört).



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


Anmelden zum Antworten