Skocz do zawartości
Raiden

Wskaźniki W C

Rekomendowane odpowiedzi

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 przez Raiden

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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 przez p3dzi0r

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...