int* a; oder int *a; Gibts da einen Unterschied?
-
Windows_Progger schrieb:
Ich persönlich habe ja einen Header mit Einträgen wie:
#define PINT int*#define PINT int* int main() { PINT a, b; *a; *b; return 0; }Dann erklär mal mit welcher Begründung das nicht gehen soll

Shade Of Mine schrieb:
warum kann ich dann
typedef int* int_ptr;
machen?und schon gehört es zum typen.
sehr verwirrend das alles...auch bei templates ist das * plöztlich beim typen.
uU gibt es da keine festen regeln wo das * hin gehört?
Ein typedef erstellt ja auch quasi einen neuen Datentyp.
-
ich bevorzuge
int* a...und nachdem ich
int* a, b, c;eh nie in meinem Leben schreiben werde, kann mir das auch egal sein, dass hier nur a ein pointer istso kann ich es auch einfacher von Derefenzierungen unterscheiden
-
Ich mach das ganze immer so:
int* p; int zahl; int* zweitesp;Pointer immer einzeln! Ne Liste finde ich auch immer unübersichtlich.
-
lagalopex schrieb:
Windows_Progger schrieb:
Ich persönlich habe ja einen Header mit Einträgen wie:
#define PINT int*#define PINT int* int main() { PINT a, b; *a; *b; return 0; }Dann erklär mal mit welcher Begründung das nicht gehen soll

Shade Of Mine schrieb:
warum kann ich dann
typedef int* int_ptr;
machen?und schon gehört es zum typen.
sehr verwirrend das alles...auch bei templates ist das * plöztlich beim typen.
uU gibt es da keine festen regeln wo das * hin gehört?
Ein typedef erstellt ja auch quasi einen neuen Datentyp.
Lol, du musst da ja auch
PINT a, *b;schreiben

-
lagalopex schrieb:
Ein typedef erstellt ja auch quasi einen neuen Datentyp.
und dann gehört das * plötzlich zum typen?
wenn ich ein typeof auf einen int* mache, bekomme ich int* zurück.
also so ganz fehlerfrei ist deine argumentation nicht.
-
natürlich ist
intnicht gleichint *, aber bei der Definition, um die es hier nunmal geht, ist * nur für den folgenden Variablennamen gültig. Gehört somit zu dem Namen und nicht zu dem Datentyp.Meine Meinung, du kannst es natürlich machen wie du es willst.
und damit basta

-
Der * gehört zum Typen dazu, aber die Sprache ist in der Verwendung leider Inkonsequent, was "int* a,b;" ja wunderbar zeigt. Ich kann mir auch nicht vorstellen warum man das so vereinbart hat, denn es lädt Fehler geradezu ein, wenn man zwei völlig verschiedene Variablen in dem selben Ausdruck deklarieren kann.
-
Jetzt weiß ich auch mal was...
int *pointer;ist klassisches C. Während
int* pointer;erst seit C++ möglich ist.
Quelle: "C++ von A bis Z" von Jürgen Wolf (Galileo Computing)
-
Buch bitte weglegen! Am besten ganz weit weg. DANKE!
-
tippgeber2 schrieb:
Buch bitte weglegen! Am besten ganz weit weg. DANKE!
Meinst du es ist so schlimm?
-
Shade Of Mine schrieb:
pyromania schrieb:
So weiß man gleich, dass der Zeiger zu a 'gehört' und nicht zu dem int.
und ich finde
int* p;
besser, weil man da weiss dass * zu int gehoert und nicht zu p.interessant, nicht?
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, cmeiner meinung nach besser sieht, dass nur a ein zeiger auf ein int ist.
-
Wolfsherz schrieb:
tippgeber2 schrieb:
Buch bitte weglegen! Am besten ganz weit weg. DANKE!
Meinst du es ist so schlimm?
Sagen wir es so, als Schrankunterlage wenn ein Bein fehlt, als Grillanzünder oder ähnliches ist es sicher recht gut.
-
Jetzt mal im Ernst, ist das Buch wegen dieser Aussage schlecht, oder generell?
-
Das Buch ist schon in Ordnung, da es doch viel nützliches enthält. Man sollte über solche Kleinigkeiten hinwegsehen, wenn man die Sprache kannt ist einem das ja klar.
C Ent-Packt ist zum Beispiel auch ein tolles Buch, da dort sehr sehr viel behandelt wird, aber man sollte halt C schon können, damit man über falsche Tatsachen hinwegsieht.
-
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, cmeiner 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 mitint& 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;oderint*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
PINTnicht übersichtlicher alsint*, 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.