Forum: Mikrocontroller und Digitale Elektronik Pointerdefinition


von Leo C. (Gast)


Lesenswert?

Hallo,

kleine dumme Frage:

was ist der Unterschied zwischen "char * dir" und "char *dir" ?

Gruss Leo

von Yalu X. (yalu) (Moderator)


Lesenswert?

Keiner (in C und C++).

von Guest (Gast)


Lesenswert?

Da gibt es keinen Unterschied. Vorsicht auch vor der Defintion
1
char* p1, p2;

p2 ist dann nicht vom Type char* sonder char.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Guest schrieb:
> Da gibt es keinen Unterschied. Vorsicht auch vor der Defintion
1
char* p1, p2;
> p2 ist dann nicht vom Type char* sonder char.

Darum verstehe ich diejenigen nicht, die immer
1
char* p1;
schreiben... Schliesslich ist p1 ein pointer auf char (und nicht 
Charpointer p1).

von Karl H. (kbuchegg)


Lesenswert?

Random ... schrieb:

> Darum verstehe ich diejenigen nicht, die immer
>
1
char* p1;
> schreiben... Schliesslich ist p1 ein pointer auf char (und nicht
> Charpointer p1).


p1       ist der Name der Variable
char *   ist ihr Datentyp

macht für viele Sinn.
IMHO war es nicht dir stärkste Idee von K&R hier einen Bruch in der 
Logik zuzulassen, indem man Pointer-Variablen und normale Variablen in 
ein und derselben Variablen-Definition zulässt.

In C++ ist die Schreibweise  'char* p1' viel weiter verbreitet und man 
löst das angesprochene 'Problem' mittels Disziplin, in dem man pro 
Definition (ausser bei bei den einfachen Standarddatentypen) nur eine 1 
Variable zulässt. Hört sich am Anfang schlimmer an als es ist und 
funktioniert in der Praxis ganz gut.

von Stefan (Gast)


Lesenswert?

Ja, für mich ergibt das Sinn. Links steht der Typ der Variable, rechts 
der Name der Variable. Ich schreibe es immer so.

Und ja, ich definiere niemals mehrere Variablen in einer Zeile.

Blöderweise kollidiert meine "Logik" mit Arrays. Ich würde gerne 
schreiben:
1
int[] a;

In Java geht das sogar. Obwohl ich kein Freund von Java bin muss ich 
doch zugeben, dass man dort manches verbessert hat (gegenüber C/C++).

von Yalu X. (yalu) (Moderator)


Lesenswert?

Random ... schrieb:
> Darum verstehe ich diejenigen nicht, die immer
>  char* p1;
> schreiben... Schliesslich ist p1 ein pointer auf char (und nicht
> Charpointer p1).

Dennis Ritchies Jünger schreiben
1
char *p1;

Bjarne Stroustrups Jünger schreiben
1
char* p1;

Atheisten schreiben
1
char * p1;

Polytheisten schreiben
1
char*p1;

So einfach ist da. Suchs' dir aus ;-)

Das Thema wurde hier übrigens schon mehrfach diskutiert

  Beitrag "'char* str' oder 'char *str'"

  Beitrag "Unterschied char* a; char *a;"

von Random .. (thorstendb) Benutzerseite


Lesenswert?

> In C++ ist die Schreibweise  'char* p1' viel weiter verbreitet und
> man löst das angesprochene 'Problem' mittels Disziplin

oder mittels eines typedef, wie das z.B. bei
1
LPCSTR str;
der Fall ist.

von Garden (Gast)


Lesenswert?

Eine gute Erklärung gibt es bei ET-Tutorials

http://et-tutorials.de/3368/pointer-in-c/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.