Speicheradressen von Pointer
-
@rbs2 sagte in Speicheradressen von Pointer:
@finnegan sagte in Speicheradressen von Pointer:
Das ist übrigens auch der Grund, weshalb ich lieber int* a statt int a schreibe. Der Typ ist schließlich int.
Schreibst du aber int* a,b,c; sind b und c mitnichten int*, sondern int.
Deswegen ja auch Declare one name (only) per declaration
-
@finnegan sagte in Speicheradressen von Pointer:
Grund, weshalb ich lieber int* a statt int a schreibe. Der Typ ist schließlich int.
Nun, *a ist aber auch ein
int
.
-
@rbs2 sagte in Speicheradressen von Pointer:
@finnegan sagte in Speicheradressen von Pointer:
Das ist übrigens auch der Grund, weshalb ich lieber int* a statt int a schreibe. Der Typ ist schließlich int.
Schreibst du aber int* a,b,c; sind b und c mitnichten int*, sondern int.
Und genau deswegen macht man eine Zeile pro Variable. Problem gelöst. So einfach kann es gehen.
-
Oder man schreibt
int *a, *b, *c;
, wieGottK&R das gewollt haben.
-
Dieser Beitrag wurde gelöscht!
-
int* a, * b, * c;
Oder so
-
Kann man natürlich so machen, aber dann isses halt Kacke
-
Das Anschneiden dieses Themas sollte als Trollen geahndet werden.
-
@hustbaer sagte in Speicheradressen von Pointer:
Und genau deswegen macht man eine Zeile pro Variable. Problem gelöst. So einfach kann es gehen
In C hat man halt zu viele Möglichkeiten, etwas falsch zu machen. C++ hat die Situation noch verschlimmbessert.
-
@rbs2 sagte in Speicheradressen von Pointer:
hat man halt zu viele Möglichkeiten
Man muss nicht jede sich bietende Möglichkeit nutzen.
-
@manni66
Außer man will dort was reißen: https://www.ioccc.org/
-
@hustbaer sagte in Speicheradressen von Pointer:
Und genau deswegen macht man eine Zeile pro Variable.
Der Haupt-Lesefluss von C++-Code ist ohnehin von oben nach unten, da wird es der Lesbarkeit sicher alles andere als schaden, wenn in einer Zeile möglichst wenig und bevorzugt nur eine Sache passiert.
-
Man muss sich wohl immernoch selbst ein Bild darum machen. Ich mag das Zeug lieber in einer Zeile haben. Andere nicht. Das ist geschmackssache. Der ganze Rest über den wir uns streiten ist darüber wie der unerfahrenste deine brühe am besten schluckt.
-
@spiri sagte in Speicheradressen von Pointer:
Ich mag das Zeug lieber in einer Zeile haben. Andere nicht. Das ist geschmackssache.
Es ist natülich Geschmackssache, ob du es magst. Eine Variable je Zeile ist aber eine Fehlervermeidungsstrategie und das hat mit "gefallen" nichts zu tun.
-
@manni66 sagte in Speicheradressen von Pointer:
Eine Variable je Zeile ist aber eine Fehlervermeidungsstrategie und das hat mit "gefallen" nichts zu tun.
Wenn mans falsch macht, ja. Wenn man aber ein fundiertes Wissen im Bereich hat, sollte sowas nicht mehr vorkommen, sondern sich genau so einfach lesen lassen, wie Zeile für Zeile.
Für mich gilt das Gleiche auch beispielsweise mit den Casts. C++-style casts gefallen mir einfach nicht, sie schränken zwar einen potenziellen Fehler ein, aber jemand der schon jahrelang damit arbeitet macht auch keine Fehler mehr beim casten. Aus dem Grund (und um mir eben das ganze getippe zu ersparen) benutzte ich in C++ Code nur C-Style-Casts. Ich weiß was ich tue und seit Jahren hab ich mir damit immernoch nicht ins Bein geschossen.
Eine weitere Fehlervermeidungsstrategie wäre wohl noch ein gutes Grundlagenbuch durchzuarbeiten....
-
@spiri sagte in Speicheradressen von Pointer:
Wenn man aber ein fundiertes Wissen im Bereich hat, sollte sowas nicht mehr vorkommen, sondern sich genau so einfach lesen lassen, wie Zeile für Zeile.
So ähnlich dachten die in Tschernobyl damals auch.
aber jemand der schon jahrelang damit arbeitet macht auch keine Fehler mehr beim casten.
Dir ist schon klar, dass man dem C-Cast alleine nicht immer ansehen kann, was er macht?
Eine weitere Fehlervermeidungsstrategie wäre wohl noch ein gutes Grundlagenbuch durchzuarbeiten....
Ja, notwendig aber nicht hinreichend.
-
@manni66 sagte in Speicheradressen von Pointer:
So ähnlich dachten die in Tschernobyl damals auch.
Quatsch, die haben damals einfach leichtfertig das gemacht, was der Chef ihnen befohlen hat, dass die Lage kritisch aussah wussten die Wissenschaftler.
@manni66 sagte in Speicheradressen von Pointer:
Dir ist schon klar, dass man dem C-Cast alleine nicht immer ansehen kann, was er macht?
Ja. Aber der gute Programmierer weiß halt was er tut.
Unterm Hut machen die C++-Style-Casts das Gleiche: Einen C-Style Cast, nur eingeschränkt, weil man zwischen static, dynamic oder einfach reinterpretieren unterscheidet. Wenn du aber einfach genau weißt, wie es funktioniert, sprich, was erlaubt ist und was nicht, wird niemals etwas schief gehen. Und sparst dir einen Haufen Tipparbeiten (was mich daran immer am meisten störte).
Anders sieht das vielleicht aus bei Up-Casts, wo man aus einer Reihe von Basis-Objekten herausfinden möchte, ob die Instanz Typ einer vererbten Klasse ist. Und auch das mieft schon etwas nach Designfehler, kann man aber machen.
@manni66 sagte in Speicheradressen von Pointer:
Ja, notwendig aber nicht hinreichend.
Wenn das Grundlagenbuch gut ist und du alles verstanden hast, dann doch, ist das hinreichend.
-
Klingt schon ein bisschen nach "Ich fahr' immer ohne Gurt und bisher ist mir nichts passiert, ich bin schließlich ein guter Fahrer". Und das, obwohl man mit Gurt genauso schnell ans Ziel kommt.
-
@seppj sagte in Speicheradressen von Pointer:
Klingt schon ein bisschen nach "Ich fahr' immer ohne Gurt und bisher ist mir nichts passiert, ich bin schließlich ein guter Fahrer".
Mjo. Dem will ich auch nichts entgegensetzten. Im RL schnall ich mich jedenfalls an
Und im Problemfall hat man immernoch den Debugger. Mit
reinterpret_cast<>
kann man übrigens auch vieles falsch machen.@seppj sagte in Speicheradressen von Pointer:
Und das, obwohl man mit Gurt genauso schnell ans Ziel kommt.
Für mich ist es halt die ganze Tipparbeit, die mich daran stört. Klar, hab grad einen Artikel gelesen, warum das auch so ugly aussehen sollte, aber dem folge ich dennoch nicht.
-
@spiri sagte in Speicheradressen von Pointer:
@seppj sagte in Speicheradressen von Pointer:
Klingt schon ein bisschen nach "Ich fahr' immer ohne Gurt und bisher ist mir nichts passiert, ich bin schließlich ein guter Fahrer".
Mjo. Dem will ich auch nichts entgegensetzten. Im RL schnall ich mich jedenfalls an
Und im Problemfall hat man immernoch den Debugger. Mit
reinterpret_cast<>
kann man übrigens auch vieles falsch machen.Dass es gefährliche Sprachelemente gibt, bei deren Benutzung ohnehin alle Alarmglocken schrillen sollten (du verweist oben auch selber auf
dynamic_cast
), ist nicht gerade ein Argument für sorglosen Umgang damit