Strukturen mit Pointern
Verfasst: Do Jan 26, 2012 8:06 pm
Hallo zusammen,
ich bin nun im meinem Buch bei Strukturen angekommen, leider hab ich dort ein wenig Probleme. Ich versuch nun seit ein paar Stunden, den Code zu verstehen, allerdings scheitere ich
Hier der Code:
Mal abgesehen davon, das der Code schlecht formatiert ist(ich hab ihn 1:1 übernommen), wieso zum Kuckkuck verwendet der Autor für die Postleitzahl eine long - Variable, für das Geburtsjahr aber eine int? Wieso verwendet man eigentlich für die Ausgabe von int nicht %i sondern %d?
Desweiteren habe ich das nicht ganz verstanden:
*adresse1 + 2 zeigen auf den Speicherort von eingabe()?
ich bin nun im meinem Buch bei Strukturen angekommen, leider hab ich dort ein wenig Probleme. Ich versuch nun seit ein paar Stunden, den Code zu verstehen, allerdings scheitere ich

Hier der Code:
Code: Alles auswählen
/* struct4.c */
#include <stdio.h>
#include <stdlib.h>
#define MAX 30
struct adres {
char vname[MAX];
char nname[MAX];
long PLZ;
char ort[MAX];
int geburtsjahr;
};
/* Funktion zur Ausgabe des Satzes */
void ausgabe(struct adres *struct_ptr) {
printf("\n\nSie gaben ein:\n\n");
printf("Vorname.........:%s",struct_ptr->vname);
printf("Nachname........:%s",struct_ptr->nname);
printf("Postleitzahl....:%ld\n",struct_ptr->PLZ);
printf("Ort.............:%s",struct_ptr->ort);
printf("Geburtsjahr.....:%d\n",struct_ptr->geburtsjahr);
}
struct adres *eingabe(void) {
static struct adres *adressen;
adressen = malloc(sizeof(struct adres));
printf("Vorname : ");
fgets(adressen->vname, MAX, stdin);
printf("Nachname : ");
fgets(adressen->nname, MAX, stdin);
printf("Postleitzahl : ");
do {scanf("%ld",&adressen->PLZ);} while(getchar()!= '\n');
printf("Wohnort : ");
fgets(adressen->ort, MAX, stdin);
printf("Geburtsjahr : ");
do {
scanf("%d",&adressen->geburtsjahr);
}while(getchar()!='\n' );
return adressen;
}
int main(void) {
struct adres *adresse1, *adresse2;
adresse1=eingabe();
adresse2=eingabe();
ausgabe(adresse1);
ausgabe(adresse2);
return EXIT_SUCCESS;
}
Desweiteren habe ich das nicht ganz verstanden:
Code: Alles auswählen
struct adres *eingabe(void)
{
static struct adres *adressen;
adressen = malloc(sizeof(struct adres));
return adressen;
}
int main(void)
{
struct adres *adresse1, *adresse2;
adresse1=eingabe();
adresse2=eingabe();
}