Hallo,
ich versuche mich gerade in der Listenerstellung in C.
Da habe ich momentan große Probleme einen Pointer aus einer Funktion
zurückzugeben.
1 | typedef struct listNode node;
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | static node* list = NULL;
|
6 | initList(list, 2);
|
7 | printList(list);
|
8 | }
|
9 |
|
10 | static void initList(node* list, uint8_t data_u8)
|
11 | {
|
12 | node* newList = malloc(sizeof(node));
|
13 | if(NULL != newList)
|
14 | {
|
15 | newList->data_u8 = data_u8;
|
16 | newList->next = NULL;
|
17 | list = newList;
|
18 | printf("address: %p\tvalue: %i\r\n", newList, newList->data_u8);
|
19 | printf("address: %p\tvalue: %i\r\n", list, list->data_u8);
|
20 | }
|
21 | }
|
22 |
|
23 | static void printList(node* list)
|
24 | {
|
25 | if(NULL != list)
|
26 | {
|
27 | do{
|
28 | printf("address: %p\tvalue: %i\r\n", list, list->data_u8);
|
29 | }while(list->next != NULL);
|
30 | printf("\r\n\r\n");
|
31 | }
|
32 | printf("list is NULL\r\n");
|
33 | }
|
in der funktion initList bekomme gibt mir das zweite printf die selben
werte wie vom ersten printf aus.
Damit sollte der pointer list auf newList liegen.
Wenn ich dann aber printList aufrufe, bekomme ich das printf"list is
NULL" heraus.
Wieso ist die variable auf einmal verschwunden (bzw. war gar nicht von
initList geschrieben worden?