#include <stdio.h>
#include <stdlib.h>
typedef struct {
unsigned length;
} List;
void init(List *l) {
l = (List *) malloc(sizeof(List));
l->length = 3;
}
int main(void) {
List *list = NULL;
init(list);
if(list != NULL) {
printf("length final %d \n", list->length);
return 0;
}
return 1;
}
To jest uproszczona wersja kodu, który daje mi problemy. Próbuję skonstruować wskaźnik *list
z metody, gdzie *list
jest przekazywany jako parametr.C - Nie można zainicjować wskaźnika przekazanego jako argument
Wiem, że mogę wykonać void init(List *l)
pracę, zmieniając go na void init(List **l)
, ale to jest dla samouczka klasy. Nie mogę zmienić argumentów metody. Spędziłem cztery godziny nad tym.
Chcę się upewnić, że nie ma sposobu, aby wykonać void init(List *l)
pracę, zanim skonfrontuję mojego profesora.
góry dzięki
PO specjalnie wymienione, jeśli można tego uniknąć, unikając "void init (List ** l)" –
@Gunner adresowany – meagar
Przypisanie określa, że musi to być konstruktor. Zamierzam wysłać do mojego profesora maila i poprosić go o zmianę wymagań. Dzięki za pomoc! –