hallo, ich habe nur ein kleines verständnis problem mit structs
wieso ist der
Code:
#include <stdio.h>
#include <string.h>
struct klasse{
char liste[255];
char name[255];
char anrede[255];
char vorname[255];
char wohnort[255];
char adresse[255];
char plz[10];
int alter;
int gewicht;
};
struct klasse s1={"LEER","LEER","LEER","LEER","LEER","LEER","LEER",0,0};
struct klasse s2={"LEER","LEER","LEER","LEER","LEER","LEER","LEER",0,0};
struct klasse s3={"LEER","LEER","LEER","LEER","LEER","LEER","LEER",0,0};
void eingabe(struct klasse &ein){
printf("\nanrede: ");
scanf("%s",&ein.anrede);
printf("\nvorname: ");
scanf("%s",&ein.vorname);
printf("\nname: ");
scanf("%s",&ein.name);
printf("\nwohnort: ");
scanf("%s",&ein.wohnort);
printf("\nplz: ");
scanf("%s",&ein.plz);
printf("\nadresse: ");
scanf("%s",&ein.adresse);
printf("\nalter: ");
scanf("%d",&ein.alter);
printf("\ngewicht: ");
scanf("%d",&ein.gewicht);
}
void ausgabe(struct klasse geb){
printf("\n\n\n\t\t%s\n\n",geb.liste);
printf("Daten von %s %s %s\n",geb.anrede,geb.vorname,geb.name);
printf("wohnort/plz: %s/%s\n",geb.wohnort,geb.plz);
printf("adresse: %s\n",geb.adresse);
printf("alter %d, gewicht %d\n",geb.alter,geb.gewicht);
}
void main(){
int wahl;
printf("deine wahl\n");
printf("1 -> teilnehmer 1\n");
printf("2 -> teilnehmer 2\n");
printf("3 -> teilnehmer 3\n");
scanf("%d",&wahl);
switch(wahl){
case 1:
eingabe(s1);
break;
case 2:
eingabe(s2);
break;
case 3:
eingabe(s3);
break;
default:
printf("nicht vorhanden\n");
break;
}
ausgabe(s1);
ausgabe(s2);
ausgabe(s3);
printf("\ndie grosse in bytes der \"klasse\": %d\n",sizeof(klasse));
printf("\ndie grosse in bytes von \"s1\": %d\n",sizeof(s1));
}
ich habe mir eine struktur namens klasse angelegt. nun hab ich in meinem buch etwas von struct alignment gelesen und wollte mal schauen welche groesse meine structur tatsächlich im speicher einnimt. ich bin etwas über die ausgabe von:
Code:
printf("\ndie grosse in bytes der \"klasse\": %d\n",sizeof(klasse));
printf("\ndie grosse in bytes von \"s1\": %d\n",sizeof(s1));
verwundert, beide, also klasse und s1 sind gleich groß. ich habe erwartet, das klasse drei mal goßer ist als zb s1. weil im prinzip lege ich 3 structs-aliases an.
und irgendwo muss ja der platz im speicher für s1,s2 und s3 sein ....
hat darauf jemand eine antwort ?
Lesezeichen