Pointer an Funktionspointer
-
Hallo zusammen,
ich habe folgenden Code:
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct p{ char name[50]; char vorname[50]; int *alter; }Person; typedef struct data{ Person *next; void (*func1)(Person *); }Persondata; static void printfinfo(Person *p){ printf("Person information\n"); printf("----------------------\n"); printf("Vorname:%s\n",p->vorname); printf("Name:%s\n",p->name); printf("Alter:%s\n",p->alter); printf("----------------------\n"); } int main(){ Person *test1; Persondata *datas; int alter=50; test1 = (Person *)malloc(sizeof(Person)); datas = (Persondata *)malloc(sizeof(Persondata)); strcpy(test1->vorname, "Muster"); strcpy(test1->name, "Mustermann"); test1->alter = &alter; datas->next = test1; datas->func1 = &printfinfo; datas->func1(datas->next); return 0; }
Wenn ich dieses Programm kompiliere und ausführe, so bekomme ich die Ausgabe:
Person information
----------------------
Vorname:Muster
Name:Mustermann
Alter:2
----------------------Alter sollte doch 50 sein. Was mache ich hier falsch?
Gruss + Danke,
Haksi
-
probier mal so:
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct p { char name[50]; char vorname[50]; int alter; }Person; typedef struct data { Person *next; void (*func1)(Person *); }Persondata; static void printfinfo(Person *p) { printf("Person information\n"); printf("----------------------\n"); printf("Vorname:%s\n",p->vorname); printf("Name:%s\n",p->name); printf("Alter:%d\n",p->alter); printf("----------------------\n"); } int main() { Person test1; Persondata datas; strcpy(test1.vorname, "Muster"); strcpy(test1.name, "Mustermann"); test1.alter = 50; datas.next = &test1; datas.func1 = printfinfo; datas.func1 (datas.next); return 0; }
-
Hallo,
ich muss irgendwie:test1->alter = &alter;
lösen. Da die Variable alter zuerst bearbeitet wird. Wie gesagt ist dies eine vereinfaschung meines Codes.
-
ok, dann wieder mit pointer
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct p { char name[50]; char vorname[50]; int *alter; }Person; typedef struct data { Person *next; void (*func1)(Person *); }Persondata; static void printfinfo(Person *p) { printf("Person information\n"); printf("----------------------\n"); printf("Vorname:%s\n",p->vorname); printf("Name:%s\n",p->name); printf("Alter:%d\n",*p->alter); printf("----------------------\n"); } int main() { Person test1; Persondata datas; int alter = 50; strcpy(test1.vorname, "Muster"); strcpy(test1.name, "Mustermann"); test1.alter = &alter; datas.next = &test1; datas.func1 = printfinfo; datas.func1 (datas.next); return 0; }