Ich lese gerade ein Buch über C um meine sehr Oberflächlichen Kenntnisse zu vertiefen. In dem Buch steht ein Beipsiel mit folgender Strucktur: struct Datum { int jahr; char monat[10]; int tag; } test; Jetzt soll eine Funktion test.monat drucken können. Dazu wird folgender Prototyp angegeben: void drucken(char *); Ich verstehe aber nicht wozu das Sternchen gesetzt wird?
Literaturhinweis: Kernighan & Ritchie, "Programmieren in C", zweite Auflage, Hanser-Verlag. Das Sternchen zeigt an, daß es sich beim Parameter der Funktion "drucken" um einen Pointer (Zeiger) auf char handelt. In C werden so auch Strings (Zeichenketten) gehandhabt. Dazu kommt noch der Array-Pointer-Dualismus, so daß ein Array synonym mit einem Pointer auf dessen erstes Element genutzt werden kann. Also: drucken(test.monat);
Helmut wrote: > Jetzt soll eine Funktion test.monat drucken können. > Dazu wird folgender Prototyp angegeben: > > void drucken(char *); > > Ich verstehe aber nicht wozu das Sternchen gesetzt wird? In C kann man mit Arrays als ganzes nur sehr wenig (eigentlich gar nichts) machen. Insbesondere kann man kein Array an eine Funktion übergeben. Arrays werden in C immer übergeben, indem die Adresse des ersten Array Elements übergeben wird. Daher bruacht die empfangende Funktion eine Pointer Variable in der dann diese Adresse gespeichert wird.
Ah, jetzt ists mir klar. Wusste nicht das der Bezeichner eines Feldes ein Pointer auf das erste Element ist. Danke
Helmut wrote: > Ah, jetzt ists mir klar. > Wusste nicht das der Bezeichner eines Feldes ein Pointer auf das erste > Element ist. > Danke Nur um das klarzustellen. Der Arraybezeichner ist kein Pointer. Er wird aber so verwendet indem der C Compiler diese Konvertierung automatisch macht, wenn notwendig.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.