| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  04-04-2004, 13:00 | #1 | 
| Senior Member Iscritto dal: Feb 2002 
					Messaggi: 906
				 | 
				
				[C++] operatore freccia ( -> )
			 
		Qualcuno sà commentare con spigazione cosa le righe di questo code?  l'ho fatto io, qualcuno mi può correggere?? #include <iostream.h> struct Lnodo { //Struttura.... bhè questo è facile char dato; //stringa Lnodo *succ; //punto la prima cella della struttura }; void main () { Lnodo *base=NULL, *p; //la prima cella è 0, *p=puntatore a che? cout << "Introdurre una sequenza di caratteri (^Z per terminare):" << endl; char ch; //dato stringa while (cin.get(ch)) { //ciclo p = new Lnodo; //p = prima cella struttura Lnodo e nuovo oggetto p->dato = ch; // p->dato equivale a (*p).dato // p punta a dato e prende il primo char p->succ = base; // p punta alla locazione dell'oggetto base 0=NULL base = p; // base (locazione)=indirizzo di p } while (p) { cout << p->dato; //non lo sò base = p; //non lo sò p = p->succ; //non lo sò delete base; //cancello gli oggetti creati con new } } quello che non capisco è se scrivo okay mi stampa yako. Perchè inizia al contrario? succ è l'indirizzo della cella come p? pure base è un puntatore alla locazione o indirizzo? --------------- documentate voi passo passo e ben documentato per chiarire una volta per tutte. ho il cervello un pò bruciato!!! | 
|   |   | 
|  04-04-2004, 21:21 | #2 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
				
				Re: [C++] operatore freccia ( -> )
			 
		#include <iostream.h>  struct Lnodo { //Struttura.... bhè questo è facile char dato; //stringa //carattere, non stringa Lnodo *succ; //punto la prima cella della struttura }; void main () { Lnodo *base=NULL, *p; //la prima cella è 0, *p=puntatore a che? //base non punta a niente, p non è inizializzato cout << "Introdurre una sequenza di caratteri (^Z per terminare):" << endl; char ch; //dato stringa //carattere, non stringa while (cin.get(ch)) { //ciclo p = new Lnodo; //viene allocata una struttura che viene puntata da p p->dato = ch; // p->dato equivale a (*p).dato //inizializzo la struttura con il carattere letto // p punta a dato e prende il primo char //p non punta a dato, p punta ad una struttura di tipo Lnodo p->succ = base; // p punta alla locazione dell'oggetto base 0=NULL //p punta sempre alla struttura, succ è un membro della struttura puntata da p, base è NULL solo al primo passaggio, al successivo punta alla struttura allocata nel ciclo rpecedente base = p; // base (locazione)=indirizzo di p //semplicemente al valore di base viene assegnato il valore di p (non l'indirizzo), in pratica ora base punta alla stessa struttura a cui punta p } while (p) { cout << p->dato; //stampa il carattere contenuto nel campo dato della struttura puntata da p base = p; //come sopra p = p->succ; //ci si sposta alla struttura successiva (p dopo punta alls struttura successiva) puntata dal campo succ della struttura puntata da p delete base; //cancello la strttura puntata da base, l'abbiamo già stampata } } Viene stampato al contrario perchè ogni carattere digitato viene inserito in testa alla lista... Se dopo si comincia a stampare dalla testa quindi si comincerà a stampare dall'ultimo carattere inserito... | 
|   |   | 
|  04-04-2004, 23:04 | #3 | 
| Senior Member Iscritto dal: Feb 2002 
					Messaggi: 906
				 | 
		dunque: p = new Lnodo; la memoria, per questa struttura viene allocata dal prg? ..... e parte dalla fine dell'ultima struttura terminante con NULL ovvero /0;.....giusto? e comunque ogno srtuttura è un byte cioè un char..... giusto? se questo sopra è giusto puoi dirmi perchè parte al contrario? non riesco a capirlo......forse non comprendo while(p) in quanto non vedo ne ++ ne --, che significa while(p) forse mentre p punta a qualcosa?? puoi spigarmi?? Ultima modifica di okay : 04-04-2004 alle 23:09. | 
|   |   | 
|  05-04-2004, 07:47 | #4 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		Significa: fino a che p != 0 (NULL)...l'utlima struttura allocata ha p == NULL... No...l'alòlocazione funziona in maniera diversa, ma non ti deve importare...scrive al contrario per il motivo che ti ho scritto sopra... | 
|   |   | 
|  07-04-2004, 11:59 | #5 | 
| Senior Member Iscritto dal: Nov 2002 Città: Padova 
					Messaggi: 2206
				 | 
		La tua struct nodo è formata da un campo dati char e di un puntatore al successivo nodo della lista. Se scrivi ok e leggi ko è semplicemente perchè tratti dei caratteri e non delle stringhe, che vengono presi in considerazione singolarmente. Esempio con OK: - Primo carattere: O - Aspetto della lista: base->O->NULL - Secondo carattere: K - Aspetto della lista: base->K->O->NULL Se stampi la lista a partire dalla testa, base nel tuo caso, è ovvio che stampi KO e non OK   
				__________________ Fisso: Case Corsair Carbide 275Q PSU Seasonic Focus GX-850 MB Asus TUF GAMING X570-PLUS CPU AMD Ryzen 3900x Cooler AMD Wrait Prism RAM 2*16GB G.Skill RipJaws V DDR4 3200MHz VGA EVGA GeForce RTX 2060 Super 8GB Monitor Asus VX239H SSD 2*ADATA XPG SX8200 PRO 1TB Raid0 Router Netgear DGND4000 SO Windows 10 Print&Scan Epson WF-4830 / Laptop: Dell XPS L502X / Mobile: Pixel 7a | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 20:25.









 
		 
		 
		 
		







 
  
 



 
                        
                        










