Ich habe kürzlich beschlossen, dass ich nur endlich C / C ++ lernen muss, und es gibt eine Sache, die ich über Zeiger oder genauer ihre Definition nicht wirklich verstehe.
Wie wäre es mit diesen Beispielen:
int* test;
int *test;
int * test;
int* test,test2;
int *test,test2;
int * test,test2;
Nach meinem Verständnis machen die ersten drei Fälle alle dasselbe: Test ist kein int, sondern ein Zeiger auf einen.
Die zweite Reihe von Beispielen ist etwas kniffliger. In Fall 4 sind sowohl test als auch test2 Zeiger auf ein int, während in Fall 5 nur test ein Zeiger ist, während test2 ein "reales" int ist. Was ist mit Fall 6? Gleich wie Fall 5?
int*test;
?
Foo<Bar<char>>
der >>
musste geschrieben werden > >
, um nicht als Rechtsverschiebung behandelt zu werden.
++
nicht durch ein Leerzeichen geteilt werden, Bezeichner können nicht durch ein Leerzeichen geteilt werden (und das Ergebnis kann für den Compiler weiterhin zulässig sein, jedoch mit undefiniertem Laufzeitverhalten). Die genauen Situationen sind angesichts des Syntaxproblems in C / C ++ sehr schwer zu definieren.