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



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



  • Nexus schrieb:

    Was spricht denn gegen Typedefs?

    Das hier 😉 :

    typedef int* PINT;
    const PINT a;
    


  • Ich für meinen Teil stelle die Übersichtlichkeit stets über die Philosophie oO
    Ich habe eine Entwicklungsumgebung mit Syntaxhighlithing, das nutze ich aus.
    Früher habe ich deswegen immer sowas wie "int* variable" geschrieben.
    Einfach weil man so ein normalfarbenen "Fremdkörper" beim sehr schnellen überfliegen eines Quelltextes
    schneller an diesem blau gefärbten int ausmachen kann als an einem ebenfalls normalfarbenen Bezeichner.

    Doch da ja nicht elementare Datentypen nicht durch Färbung hervorgehoben werden,
    hatte ich mir später angewöhnt "typ * bezeichner" zu schreiben,
    damit ich auf dem ersten Blick, mit einer so kleinen Barriere wie möglich erkennen kann ob das Zeug da vor mir ein Zeiger ist oder nicht.

    Ist natürlich kein Wundermittel doch auch nichts, dass es zu unterschätzen gilt.
    Besonders wenn man müde ist macht sich ein merklicher Unterschied bemerkbar, sollte man je eine Weile mit verschiedenen Vorgehensweisen bezüglich dieses Themas gearbeitet haben.



  • Kahino schrieb:

    Ich für meinen Teil stelle die Übersichtlichkeit stets über die Philosophie oO
    Ich habe eine Entwicklungsumgebung mit Syntaxhighlithing, das nutze ich aus.
    Früher habe ich deswegen immer sowas wie "int* variable" geschrieben.
    Einfach weil man so ein normalfarbenen "Fremdkörper" beim sehr schnellen überfliegen eines Quelltextes
    schneller an diesem blau gefärbten int ausmachen kann als an einem ebenfalls normalfarbenen Bezeichner.

    Doch da ja nicht elementare Datentypen nicht durch Färbung hervorgehoben werden,
    hatte ich mir später angewöhnt "typ * bezeichner" zu schreiben,
    damit ich auf dem ersten Blick, mit einer so kleinen Barriere wie möglich erkennen kann ob das Zeug da vor mir ein Zeiger ist oder nicht.

    Ist natürlich kein Wundermittel doch auch nichts, dass es zu unterschätzen gilt.
    Besonders wenn man müde ist macht sich ein merklicher Unterschied bemerkbar, sollte man je eine Weile mit verschiedenen Vorgehensweisen bezüglich dieses Themas gearbeitet haben.

    Ist mir zu hoch!
    Verstehe ich nicht, sry! 😕

    int GuckGuck;
    int Zahl;
    int Raum;
    int* Magnet;
    float Razig;
    int Brauchich;
    

    Für jede Variable gibts ne eigene Zeile!
    Sieht meiner Meinung nach am übersichtlichsten aus.
    Das Problem, wo der Stern hinkommt, fällt weg.
    Und der Stern gehört zum Typ, daher kommt der auch dahin.



  • Thomy schrieb:

    Kahino schrieb:

    Ich für meinen Teil stelle die Übersichtlichkeit stets über die Philosophie oO
    Ich habe eine Entwicklungsumgebung mit Syntaxhighlithing, das nutze ich aus.
    Früher habe ich deswegen immer sowas wie "int* variable" geschrieben.
    Einfach weil man so ein normalfarbenen "Fremdkörper" beim sehr schnellen überfliegen eines Quelltextes
    schneller an diesem blau gefärbten int ausmachen kann als an einem ebenfalls normalfarbenen Bezeichner.

    Doch da ja nicht elementare Datentypen nicht durch Färbung hervorgehoben werden,
    hatte ich mir später angewöhnt "typ * bezeichner" zu schreiben,
    damit ich auf dem ersten Blick, mit einer so kleinen Barriere wie möglich erkennen kann ob das Zeug da vor mir ein Zeiger ist oder nicht.

    Ist natürlich kein Wundermittel doch auch nichts, dass es zu unterschätzen gilt.
    Besonders wenn man müde ist macht sich ein merklicher Unterschied bemerkbar, sollte man je eine Weile mit verschiedenen Vorgehensweisen bezüglich dieses Themas gearbeitet haben.

    Ist mir zu hoch!
    Verstehe ich nicht, sry! 😕

    int GuckGuck;
    int Zahl;
    int Raum;
    int* Magnet;
    float Razig;
    int Brauchich;
    

    Für jede Variable gibts ne eigene Zeile!
    Sieht meiner Meinung nach am übersichtlichsten aus.
    Das Problem, wo der Stern hinkommt, fällt weg.
    Und der Stern gehört zum Typ, daher kommt der auch dahin.

    Genial seinen Einwand mit Typen nachzubasteln, welche hier alle Syntaxhighlighting haben und drei bis vier Buchstaben in Kleinschrift sind...



  • Was er meint:

    int* a;
    int *a;
    // beim ersten (int* a) sieht man beim Überfliegen dank 
    // Syntaxhighlighting schneller das es ein Pointer ist.
    
    Horst* a:
    Horst *a;
    // ist beides nicht sehr schnell zu überblicken (beim Überfliegen),
    // da kein Syntaxhighlighting.
    
    Horst * a;
    // ist da schon schneller zu sehen.
    

    Finde das freistehende * aber eher bescheiden, da es so eher dem binären Operator * gleicht.



  • Nexus schrieb:

    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.

    Na ein typedef, da hast du ja einen ganz neuen Typen, hier wird das einfach eingesetzt und du hast 0 Geschwindigkeitsverlust 💡



  • Eine kleine Auflösung 🙂
    Bei C++ ist es egal wo das *-chen steht.
    EEs wwar eine Eigenheit eines selbstentwickelten Compilers. Dort hat es etas ausgemacht und zwar...

    int* a; hat bewirkt, dass ein Smartpointer angelegt wurde (Ncahbildung vom Garbage-Collector => sobald keine Instanz mehr gibt wird der Pointer gelöscht)

    int *a; war dann der normale Pointer.

    Also gab es doch diese dunkle Ecke, nur wird sich da wohl keiner von Euch drin verirren 😉

    Trotzdem danke an alle.

    Ich benutze nur übrigens nur int *a, was aber bei C nicht weiter verwunderlich ist 🙂



  • Ein Kommentar zu der Ansicht, das * gehöre zum Typen. In int a[10]; gehören die Array-Klammern auch zum Typen, was nun? Man muss sich vergegenwärtigen, dass eine Deklaration in C und C++ nicht aus Typ und Bezeichner, sondern aus (Grund-)Typ und Deklarator besteht. * und [10] gehören zum Deklarator.

    [Das ist nicht als Argument dafür, wo das Sternchen hingehört, gemeint.]


Anmelden zum Antworten