sizeof

OP #367901
Lesenswert?

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
#367903
Lesenswert?

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.
Gast #367906
Lesenswert?

> 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.
#367910
Lesenswert?

:-)
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>
Gast #367911
Lesenswert?

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>
Gast #367912
Lesenswert?

<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>
Gast #367913
Lesenswert?

> ... 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>
Gast #367915
Lesenswert?

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?
Moderator Persönliche Seite #367916
Lesenswert?

> 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.
Gast #367917
Lesenswert?

> "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 speci&#64257;es 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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren