int* a; oder int *a; Gibts da einen Unterschied?
-
Hallo Zusammen,
ich bin eher in der C-Ecke zuhause. Dort macht es definitv keinen Unterschied, ob ich einen Pointerwie in 1) oder in 2) deklariere. Aber soweit ich mich dunkel erinnern kann macht es in C++ schon einen Unterschied, oder?
- int* a;
- int *a;
Danmke schon mal

PS: ich meine damit nicht das Missverständniss int* a, b; zB

-
Ist identisch.
-
dunkel erinnern kann macht es in C++ schon einen Unterschied
Seeehr dunkel.. ^^
In den wenigsten Fällen in C++ spielt es eine Rolle wo etwas steht. (Solange es nicht zusammengehört).
-
Man sollte nur darauf aufpassen, dass hier
int* a, b, c;nur a ein Pointer ist und b und c nicht.
Darum mache ich es immer an der Variablen hin.
-
Unregistrierter schrieb:
Man sollte nur darauf aufpassen, dass hier
int* a, b, c;nur a ein Pointer ist und b und c nicht.
Darum mache ich es immer an der Variablen hin.PS: ich meine damit nicht das Missverständniss int* a, b; zB

-
Ich persöhnlich finde das
int *aaber schöner und besser.
So weiß man gleich, dass der Zeiger zu a 'gehört' und nicht zu dem int.
-
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?
-
Im Linux Kernel wird int *p; benutzt, ebenso in der Winapi (und wahrscheinlich auch in Windows selbst).
Es spricht also durchaus für "int *p" wenn solch große Projekte diese Konvention verwenden.
-
Linux-Entwickler schrieb:
Im Linux Kernel wird int *p; benutzt, ebenso in der Winapi (und wahrscheinlich auch in Windows selbst).
Es spricht also durchaus für "int *p" wenn solch große Projekte diese Konvention verwenden.in der winapi ist das doch INT_PTR, oder?

ich sehe es als <typ> <name> an, und der Typ ist nun einmal "Zeiger auf int", also
int* ptr;
-
Xantus schrieb:
Linux-Entwickler schrieb:
Im Linux Kernel wird int *p; benutzt, ebenso in der Winapi (und wahrscheinlich auch in Windows selbst).
Es spricht also durchaus für "int *p" wenn solch große Projekte diese Konvention verwenden.in der winapi ist das doch INT_PTR, oder?

Nicht für alles bzw. überall werden diese Dinger benutzt, gerade bei DWORD steht eigentlich immer DWORD *nSize oder sowas.
Wobei ich mich jedes mal beim Programmieren frage wer auf die dumme Idee kam diese typedefs in Großbuchstaben zu schreiben, das nervt beim Tippen einfach nur.
-
könnten theoretisch auch folgendes benutzen...
int * p;
-
Skym0sh0 schrieb:
könnten theoretisch auch folgendes benutzen...
int * p;Ich persönlich habe ja einen Header mit Einträgen wie:
#define PINT int*Dann schreib ich einfach
PINT p;und muss mir um so Leerzeichensetzung keine Gedanken machen und sehe sofort, dass es ein Int-Zeiger ist

-
Ich bevorzuge auch
int *a;aus dem Grund den Unregistrierter schon nannte.
Inhaltlich ist es egal... wie ziemlich viele Leerzeichen in C/C++
@Shade Of Mine: Es gehört ja eben nicht zu
intsondern in erster Linie zump. Sonst waren beiint* a, b, c;ja alle dreiint *.
-
Ich bin bis heute unentschlossen und mach es mir daher ganz einfach:
int*a;
-
lagalopex schrieb:
@Shade Of Mine: Es gehört ja eben nicht zu
intsondern in erster Linie zump. Sonst waren beiint* a, b, c;ja alle dreiint *.ist das so?
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?
-
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
