Raiden Opublikowano 24 Marca 2008 Zgłoś Opublikowano 24 Marca 2008 (edytowane) Chciałbym zrobić listę i mam problem z zapisywanie słów/liczb do niej. #include <stdio.h>#include <stdlib.h>int main(void){ typedef struct lista { int x; lista *next; }; lista *w1; w1 = (lista*) malloc(sizeof(lista)); w1 -> x = 10; return 0;} Ten kod działa, ale jeśli w strukturze miałbym int *x; zamiast int x; to jak zapisać coś do takiej zmiennej? Myślałem, że wystarczy w1 -> (*x) = 10; ale coś takiego nie działa. To samo, jeśli w strukturze miałbym np. char napis[20]; albo char *napis[20]; jak się do tego odwołać? Edytowane 24 Marca 2008 przez Raiden Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
p3dzi0r Opublikowano 24 Marca 2008 Zgłoś Opublikowano 24 Marca 2008 (edytowane) hmm z tego co pamietam to w strukturze jesli masz wskaznik to musisz pod ten wskaznik zaalokowac miejsce czyli w1 = (lista*) malloc(sizeof(lista)); (w1 -> x) =(int*)malloc(sizeof(int)); dawno nie alokowałem ale jeśli sie pomyliłem w zapisie to trop na pewno jest dobry. int main(void) { typedef struct lista { int *x; lista *next; }; lista *w1; w1 = (lista*) malloc(sizeof(lista)); (w1 -> x) = (int*)malloc(sizeof(int)); *(w1->x)=10; return 0; } Edytowane 24 Marca 2008 przez p3dzi0r Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 26 Marca 2008 Zgłoś Opublikowano 26 Marca 2008 jeśli struktura zawiera wskaźnik to jest to tylko wskaźnik.. jeśli napiszesz *x = 10 to dostaniesz access violation jeśli będziesz miał szczęście... lub nadpiszesz kawałek programu. Wskaźnik musi na coś wskazywać zanim zaczniesz go używać! W innym wypadku jakiekolwiek przypisanie pod obszar pamięci na który wskazuje wskaźnik niezainicjowany po prostu przypisuje wartość gdzieś w losowe miejsce pamięci. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Raiden Opublikowano 26 Marca 2008 Zgłoś Opublikowano 26 Marca 2008 Wszystko już mi ładnie działa. Dzięki. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...