struct an fuction übergeben in C
Fabienne
- programmiertechnik
Hi zusammen,
kann mir jemand sagen, wie ich in C ein struct an eine Funktion übergebe?
Thanx Fabe
kann mir jemand sagen, wie ich in C ein struct an eine Funktion übergebe?
Habs selbst rausbekommen....
Man muss eine temporäre Instanz des structs innerhalb der aufgerufenen Funktion erzeugen
foo(struct meinstruct temp[10])
{
};
Hi,
man sollte es ja eigentlichnicht tun, aber bevor's noch falsch im Forum steht.
Man muss eine temporäre Instanz des structs innerhalb der aufgerufenen Funktion erzeugen
Nein, _muß_ man nicht.
foo(struct meinstruct temp[10])
{
};
Besser wäre es, einfach nur einen Zeiger zu übergeben:
---snip---
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct list_t{
char number[5];
struct list_t *next;
} list;
void foo(struct list_t *list){
while(list != NULL){
printf("%s\n",list->number);
list = list->next;
}
}
int main(){
list *start = NULL, *next = NULL;
char *liste[] = {
"eins",
"zwei",
"drei",
"vier",
};
int i = 0;
/* allozieren des nötigen Speichers */
start = malloc(sizeof(struct list_t));
if(start == NULL){
fprintf(stderr,"malloc() failed at %d\n",__LINE__);
exit(EXIT_FAILURE);
}
/* Setzen eines Zeigers darauf*/
next = start;
/* Füllen des Inhalts */
strcpy(next->number, liste[i]);
/* Füllen des restlichen Inhalts */
for(i = 1;i<3;i++){
next->next = malloc(sizeof(struct list_t));
if(next->next == NULL){
fprintf(stderr,"malloc() failed at %d\n",__LINE__);
exit(EXIT_FAILURE);
}
next = next->next;
strcpy(next->number, liste[i]);
}
/* Abschließen der Liste */
next->next = NULL;
/* Setzen des Zeigers "next" auf die Startposition der Liste */
next = start;
/* Übergabe dieses Zeigers an die Funktion foo(struct list_t *list) */
foo(next);
exit(EXIT_SUCCESS);
}
---snap---
so short
Christoph Zurnieden