char* p vs. char *p

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
starcow
Establishment
Beiträge: 523
Registriert: 23.04.2003, 17:42
Echter Name: Mischa Schaub
Kontaktdaten:

char* p vs. char *p

Beitrag 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
Freelancer 3D- und 2D-Grafik
mischaschaub.com
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: char* p vs. char *p

Beitrag 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
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
nullptr
Beiträge: 10
Registriert: 04.11.2020, 21:02

Re: char* p vs. char *p

Beitrag 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.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: char* p vs. char *p

Beitrag 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.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Mirror
Establishment
Beiträge: 248
Registriert: 25.08.2019, 05:00
Alter Benutzername: gdsWizard
Kontaktdaten:

Re: char* p vs. char *p

Beitrag 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.
Hat den StormWizard 1.0 und 2.0 verbrochen. http://www.mirrorcad.com
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: char* p vs. char *p

Beitrag 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.
Antworten