Seite 1 von 1

char* p vs. char *p

Verfasst: 20.03.2021, 00:51
von starcow
Welche Konvention verwendet ihr? Würde mich mal interessieren!

Ganz zu Beginn war ich bei char *p, aber mittlerweile empfinde ich char* p als "natürlicher", da für mich "p" die Variable und char* einfach der Typ ist.
Was mich in meiner Auffassung bestärkt, ist der Rückgabetyp von Funktionen. Will man einen Zeiger zurückgeben, kann man ja gar nicht anders, als das *-Symbol an den Datentyp anzuhängen.

char* foo();

Gegenargument ist vielleicht, dass sowas nicht wie erwartet funktioniert - leider:

char* p, s;

Wie haltet ihrs denn?

LG, starcow

Re: char* p vs. char *p

Verfasst: 20.03.2021, 09:56
von xq
Variante 3:

Code: Alles auswählen

char * p;
Finde ich persönlich am lesbarsten → damit wird es genommen. Code muss ja nicht dicht sein, wir haben Platz

Code: Alles auswählen

char* p, s;
Weg damit! Ich benutze aus genau solchen Gründen nur "1 Deklaration pro Zeile", damit kann man dann nämlich auch sowas wie Doku-Kommentare verteilen. Geht bei ner Multi-Deklaration auch nicht sauber

Re: char* p vs. char *p

Verfasst: 20.03.2021, 10:18
von nullptr
Ich war auch immer schon intuitiv auf der "char*" Seite und wenn ich die Wahl habe schreibe ich auch so meinen Code. Professionell halte ich mich an die jeweiligen Richtlinien falls vorhanden. Bzw. kann ein clang-format das dann erledigen. Argumentieren würde ich wenn nur aus Konsistenz Gründen für die entsprechend größere Seite :)

"const" wäre dann das nächste Thema. Hier tendiere ich zu "const T".
Aber wie bei den Pointern ist es mir im Endeffekt egal und ich nehme was vorhanden ist.

Re: char* p vs. char *p

Verfasst: 20.03.2021, 23:22
von Schrompf
* gehört zum Typ, also 'char* p;'

Ansonsten bin ich im Laufe der Jahre abgestumpft, ich lese über Whitespace drüber. Es ist mir ehrlich wurscht, wo die Leute ihre Leerzeichen hinetzen.

Re: char* p vs. char *p

Verfasst: 21.03.2021, 00:03
von Mirror
ich schreibe char *p, weil der Stern nur für p gilt. Wenn man mehere Variablen definiert führt das zu Fehlerquellen. Allerding vermeide ich Mehrfachdefinitionen und verwende sie nur in Einzelfällen.

Re: char* p vs. char *p

Verfasst: 21.03.2021, 00:58
von Spiele Programmierer
Der Zeiger ist Teil des Typen, nicht der Variable. Das ist Fakt. Weil man das zu Zeiten als C entworfen wurde noch nicht so wahrgenommen hat, haben wir aber die heutigen Syntaxprobleme wie char* a, b, bei dem nur a ein Zeiger wird, und so Dinge wie char (&a)[] und (void (a)())[] usw., die ziemlich konfus werden.

Wenn man weiter C++ verwendet, kann man da aber nix machen.

Ich bekenne mich jedoch zu char* p. Dann kann man sich für normale Zeiger und Referenzen vorstellen, C(++) hätte normalen Syntax. Arraysyntax und Mehrfachdeklarationen sind so oder so konfus in C++. Am besten meiden, z.B. durch usings.