Hallo Ich fange gerade erst mit C an zu programmieren.Jetzt habe ich ein Array von der Länge,wie ich sie mit char Zeichen fülle.Um die Anzahl der Elemente herauszufinden wollte ich den sizeof Befehl verwenden. Bei der Eingabe sizeof(wort); bekomme ich eine Fehlermeldung.Fehlt noch eine include Datei,oder muss ich es anders schreiben. danke
Schämen solltest du dich dafür, dass * du einen Frage zu existierendem Code schreibst ohne auch nur ein Fitzelchen des Codes herzuzeigen * du von einer Fehlermeldung schreibst, ohne den exakten Text der Fehlermeldung zu schreiben. Das wenigste wäre eine Kurzzusammenfassung des Fehlertextes in deinen eigenen Worten. Zitat: "Du gehst ja auch nicht zum Doktor und sagst: Es tut weh" Ansonsten gibt es keinen Grund sich zu schämen. Jeder hat mal Tomaten auf den Augen.
Schämen solltest du dich dafür, dass Du willst, daß andere den Fehler auch selber machen müssen. Wenn man schon postet, Problem gelöst, dann aber wenigstens auch wie. Peter
sizeof geht nur bei statischen strukturen (z.B. sizeof(int), sizeof(struct str)) Man kann damit nicht die Größe von dynamischen Datenstrukturen erkennen!!!
> Man kann damit nicht die Größe von dynamischen Datenstrukturen > erkennen!!! Was allerdings nichts ausmacht, da C sowieso ein statisches Typsystem hat und es damit gar keine "dynamischen Datenstrukturen" gibt.
Selecta meinte wohl eher, daß char* p; p = (char *) malloc(1234); printf("%d", sizeof (p)); nicht zur Ausgabe von 1234 führt ...
> es damit gar keine "dynamischen Datenstrukturen" gibt.
Naja, halb und halb. Das letzte Element einer struct darf eine
unbestimmte Länge haben. sizeof() ermittelt in diesem Falle
nur die statisch bekannte Größe des Objekts.
(Im Jahr 2007 reden wir über C99.)
:-) Wenn ich auch noch mal darf: Der OP redet von einem Array und nicht von einer Struktur. <gemein werdend> Strukturen sind nämlich für 90% aller Poster hier sowieso viiiiiiel zu high-tech. Da muss man schon froh sein, wenn ein Fragesteller mit einem Array richtig umgehen kann. </gemein werdend, aber das musste ich mal loswerden>
Hi, <bisschenofftpopic> Sizeof ist übrigens ein Operator und keine Funktion. Es heißt also nicht "sizeof(variable)" sonder "sizeof variable". (wenn man die größe eines datentyps wissen will muss man natürlich sizeof (int) o.ä. schreiben </bisschenofftpopic>
<nochmalofftopic> p = (char *) malloc(1234); Sollte in C nicht gecastet werden, malloc gibt einen void-zeiger zurück, der einen char * zugewiesen wird, wird also implizit gecastet und verbirgt nur Fehlermeldungen. Rufus programmiert wohl auch C++ ;-) </nochmalofftopic>
> ... wird also implizit gecastet und verbirgt nur Fehlermeldungen.
<nitpick>
Es gibt keine impliziten Casts. Der Cast ist das, was man hinschreibt,
wenn man explizit eine Konvertierung anfordert.
</nitpick>
Lass dich doch nicht einschüchtern. "Cast" ist der englischsprachige Begriff für Typumwandlung. Daran ist absolut nichts falsch oder was denkt Rolf, wie ein englisch sprechender Programmierer eine implizite Typumwandlung nennen würde?
> Lass dich doch nicht einschüchtern. Du bist hier irgendwie im falschen Film > "Cast" ist der englischsprachige > Begriff für Typumwandlung. Ein typecast hat in C eine ganz genau definierte Bedeutung. > ..., wie ein englisch sprechender Programmierer eine implizite > Typumwandlung nennen würde? type coercion oder argument promotion, je nach Kontext.
> "Cast" ist der englischsprachige Begriff für Typumwandlung. Daran > ist absolut nichts falsch In C (und meines Wissens auch den meisten anderen Sprachen, die sowas haben) ist es falsch. Da ist genau festgelegt, was der Begriff "cast" bedeutet. Hier mal ein Ausschnitt aus der Definition: 6.3 Conversions 1 Several operators convert operand values from one type to another automatically. This subclause specifies the result required from such an implicit conversion, as well as those that result from a cast operation (an explicit conversion). > oder was denkt Rolf, wie ein englisch sprechender Programmierer > eine implizite Typumwandlung nennen würde? implicit type conversion?
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.