Forum: PC-Programmierung kleine Frage


von C-Anfänger (Gast)


Lesenswert?

#include <stdio.h>

int vectorsize(double vec[])
{
   return sizeof(vec);

}

int main()
{
   double vector3[] = {2.5, 5.5, 4.5, 7.7, 8.3, 7.9};
   int size = vectorsize(vector3);
   printf("size = %d\n", size);

   return 0;

}

Warum hat das Ergebnis den Wert 4, und nicht 6 ??

von vielleicht (Gast)


Lesenswert?

sizeof  liefert die grösse des datentyps zurück. in diesem fall ist es 
double welcher 4 byte gross ist

von Andreas (Gast)


Lesenswert?

Der sizeof-Operator liefert die Größe eines Datentyps in Vielfachen von 
sizeof(char) zurück. In deinem Fall sind das 4, was den 4 Byte = 32 Bit 
des Typs double entspricht.
sizeof liefert dir nicht die Länge (Anzahl der Elemente) deines Vektors 
zurück.

Grüße

Andreas

von C-Anfänger (Gast)


Lesenswert?

herzlichen Dank für Ihre schnelle Antwort

von Karl H. (kbuchegg)


Lesenswert?

vielleicht schrieb:
> sizeof  liefert die grösse des datentyps zurück. in diesem fall ist es
> double welcher 4 byte gross ist

Fast.
Der Wert ist 4, weil auf seinem System ein Pointer 4 Bytes Länge hat.

Auch wenn man schreibt

int vectorsize(double vec[])

so ist das nichts anderes als eine glorifizierte Verschleierung der 
Tatsache, dass vec hier nur ein Pointer ist. Und daher liefert sizeof 
auch nur die Länge eines Pointers.

von C-Anfänger (Gast)


Lesenswert?

danke vielmals...

von noch ne kleine Frage (Gast)


Lesenswert?

Wäre das Ergebnis auf nem 64bit System dann entsprechend 8?

von Klaus W. (mfgkw)


Lesenswert?

ja

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
Noch kein Account? Hier anmelden.