GRY-Online.pl --> Archiwum Forum

C++; operator ->

09.04.2008
18:26
[1]

lo0ol [ Jónior ]

C++; operator ->

Haj,

mam taką prośbę. Proszę o utwierdzenie mnie w przekonaniu lub też odwleczenie od niego że działanie operatora -> na przykładzie zaprezentowanym niżej jest następujące <niżej>.

Kod trochę odchudzony:
__________________________________________________________________
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>

struct stos

char dane[10];
stos *ref;
›;

using namespace std;
void dodaj_element(char dodaj[10]);

stos *pointer;
stos *old;

int main() ‹
char dane[10];
pointer=NULL;
printf("STOS FILO\n");

do ‹
printf("Dane: ");
scanf("%s",dane);
dodaj_element(dane);
›while (strcmp(dane,"&")!=0);


system("PAUSE>null");
return 0;


void dodaj_element(char dodaj[10]) ‹
old=pointer;
pointer=new stos;
strcpy(pointer->dane,dodaj);
pointer->ref=old;


__________________________________________________________________

strcpy(pointer->dane,dodaj); - Ciąg znaków zawarty w tablicy dodaj jest wstawiany do elementu struktury określonego jako "dane" znajdującego się pod adresem "pointer".

pointer->ref=old; - Do wskaźnika "ref" struktury "stos" znajdującej się pod adresem "pointer" przypisywany jest adres zapisany we wskaźniku "old".

Czy mógłby mi ktoś opisać dokładne przestawianie się wskaźników w tej strukturze dynamicznej, proszę? :D

Z góry dzięki.

09.04.2008
20:38
[2]

lo0ol [ Jónior ]

Ok, już doszedłem ale zmiana pytania.

Na co jest utawiany pointer->ref podczas pointer=NULL;?
Czy każdy wskaźnik typu stos to dwa wskaźniki + jedna wartość? np. *pointer oraz pointer->ref?

09.04.2008
23:47
[3]

lo0ol [ Jónior ]

Próba upa i zmiana pytania.

void dodaj_element(char dodaj[10]) ‹
old=pointer;
pointer=new stos;
strcpy(pointer->dane,dodaj);
pointer->ref=old;



Podczas wykonywania tej funkcji:
1.Old ustawia sie na wartość pointera (czyli zarówno główny wskaźnik + old->dane + old->ref ?)
2.W miejscu pointera tworzony jest nowy obiekt typu stos
3.Dane z tablicy dodaj sa wrzucane do pointer->dane
4.Pointer->ref ustawiany jest na old

Czy mógłby mi ktoś opisać bardziej obrazowo jak to jest zrobione że po drugim wywołaniu funkcji kolejna wartość jest wpisana do sąsiadującego adresu, a nie tego samego? Bo mój tok myślenia nie może do tego dojść.

© 2000-2024 GRY-OnLine S.A.