Pointer
-
Nichts sinnvolles. Der Name eines Arrays alleine evaluiert ja schon zu einem Zeiger auf das erste Element. Ein zusätzlicher '&'-Operator würde aus dem 2. Argument von scanf() einen anderen, falschen Typen machen (nicht char* wie es %s erwartet, sondern char (*)[10]).
Bei hohen Warnstufen sollte der Compiler das aber imho auch bemängeln.
-
Hi und Danke für die Antwort.
Was ist denn char (*)[10] ? Ein 10 Pointer auf einen Pointer of char?
Oder ein Pointer auf einen Pointer of char?
-
Ein Zeiger auf ein Array von 10 char.
-
Tim schrieb:
Ein zusätzlicher '&'-Operator würde aus dem 2. Argument von scanf() einen anderen, falschen Typen machen (nicht char* wie es %s erwartet, sondern char (*)[10]).
nö, ein & vor einem array-namen bewirkt genau gar nichts.
char inp[10]; char *p = &inp; // ist das selbe wie.. char *q = inp; // ...das
-
Ach net, du sinkst aber schnell. Erst flamen und trollen, und jetzt kannst nichtmal mehr C? Arme Sau
-
Tim schrieb:
Ach net, du sinkst aber schnell. Erst flamen und trollen, und jetzt kannst nichtmal mehr C? Arme Sau
probiers doch mal aus:
char inp[10]; char *p = &inp; // ist das selbe wie.. char *q = inp; // ...das printf ("%p %p", p, q); // <--- gleiche adresse
-
Dass die Adresse identisch ist, ist keinn Wunder. Aber es sind unterschiedliche Typen. Schalt doch einfach mal die Warnstufen an/höher
-
Tim schrieb:
Aber es sind unterschiedliche Typen.
ach das meinst du. tut mir leid, dann hab' ich dich missverstanden.
-
Tim schrieb:
Ein Zeiger auf ein Array von 10 char.
Und worin besteht der Unterschied zu char* ?
Es fällt mir schwer das nachzuvollziehen.
Am Ende zeigt der Zeiger doch trotzdem auf die selbe Adresse...
Kann ich mir das folgendermaßen vorstellen?
char* adressiert nur einen Charakter und char (*)[10] gleich alle
10, bzw. das ganze Array?
-
Cream schrieb:
Kann ich mir das folgendermaßen vorstellen?
char* adressiert nur einen Charakter und char (*)[10] gleich alle
10, bzw. das ganze Array?So in etwa. Lass dir doch mal die Adressen eines char* und eines char (*)[10] anzeigen, und dann beide noch inkrementiert.