C speicherplatz von variablen

KarottenTee

Banned
Registriert
Mai 2012
Beiträge
315
hallo,

ich soll die grösse von folgenden variablen in bytes nennen:

float p[3],q,r;
int i[2][3],k[4];
double x,z[1];


wie gehe ich da vor? wäre nett wenn mir jemand sagt, wie man so etwas löst.
gruss
 
google nach: sizeof.
 
danke für die schnellen antworten aber ich soll die aufgabe ohne hilfsmittel lösen.
 
Das geht nicht, weil die Typen je nach System unterschiedlich groß sind.

€: Siehe auch hier: http://en.wikipedia.org/wiki/C_data_types#Basic_types
Teilweise sind die Größen vollständig von der Implementierung wählbar, teilweise
wird nur eine Mindestgröße vom Standard verlangt. Die Frage kann man also
nicht allgemeingültig beantworten.
 
Zuletzt bearbeitet:
Wahrscheinlich sind dir deine "Standartgrößen" gegeben, wie normalerweise z.B.

int: 4 bytes.
short int: 2 bytes.
long int: 4 bytes.
char: 1 bytes.
float: 4 bytes.
double: 8 bytes.

Der Rest ist dann ja nurnoch simple rechnerei.

float p[3],q,r ist dann 20 bytes groß,
int i[2][3],k[4] 40 bytes,
double x,z[1] zuguterletzt 16 bytes

(korrigiert mich wenn ich falsch liege, kann mal passieren :))

LG Tigerass
 
Das ist irreführend bis falsch und ohne Erklärung, wie du zu den Werten gekommen bist, auch noch für OP
völlig nutzlos, was Erkenntnisgewinn angeht. Wir sind doch nicht dafür hier, den Leuten ihre Hausaufgaben
zu petzen, oder?
 
Ganz banal: Man könnte so lange (bei signed Datentypen) iterieren, bis irgendwann der Wert < 0 ist (bei unsigned müsste man bei 1 anfangen und irgendwann auf 0 hoffen). Auf die Anzahl der Möglichkeiten, kann man ja auf den Speicherplatz schließen. Ist natürlich hochgradiger Blödsinn, aber so könnte man es "händisch" "herausfinden". Zeiger sind hierbei natürlich dann ein weiteres Problem, Klassen und Strukturen ebenso (außer man rechnet jeden Member selbst auf).

Kurzum: sizeof ist die einzige, sichere Möglichkeit.
 
also wenn man so etwas programmatisch herausfinden will, warum dann nicht gleich sizeof-operator nutzen? der gehört zu c genaso dazu wie das inkrementieren von variablen.
 
Ich würde dem TE empfehlen sich mal die entsprechenden Kapitel im Open Book C von A bis Z durchzulesen. Dort wenden die Basisdatentypen schön erläutert und auch auf den Zusammenhang der jeweiligen Größen im Bezug auf das Betriebssystem eingegangen.

Kapitel:

5 Basisdatentypen
6.7 Der »sizeof«-Operator

Was hilft es dem TE wenn wir ihm die Lösung vorkauen, er muss es doch selbst verstehen. Da muss man halt mal in den sauren Apfel beißen und sich mal die entsprechenden Kapitel in der Fachliteratur zu Gemüte führen.
 
Jetzt machts im TE nicht so schwer, also wenn du 32-bit Windows/Linux einsetzt:
float <=> 4 Byte
double <=> 8 Byte
int <=> 4 Byte
Der Rest sollte logisch sein (Arrays einfach hochmultiplizieren).

Sollte das nicht nur eine HA sein und du willst das in einem Programm einsetzten, dann schreibst du grad hochgradig fragilen, nicht portierbaren Code.
Die Lösung ist da, wie schon gesagt, sizeof.
 
Zurück
Oben