[Linguaggio C] Alcuni problemi con i puntatori
Buongiorno a tutti,
mi chiamo Davide e ho 36 anni. La mia carriera professionale è lunga e variegata, motivo per cui è un po' difficile da raccontare in poche righe. Le ultime mie esperienze sono state di docenza alle scuole superiori e adulti, da settembre inizierò con una società di intelligenza artificiale. Adoro guidare e il cappuccino XD. Dopo questa rapida presentazione, vi scrivo per chiedervi aiuto su una questione: nonostante i miei ricordi di C arrivino dalle superiori e da un lavoro svolto nel 2005, mi pare di ricordare abbastanza bene alcune regole. 1) dichiarazione variabile. Es: int a; 2) dichiarazione di puntatore a variabile. Es: int *b; 3) passare da variabile a indirizzo della variabile: &a; 4) passare da indirizzo a contenuto della variabile: *b; 5) passaggio funzione per riferimento. Es: int funzione(int *a, int *b) -> se modifico a e b all'interno della funzione, cambiano anche nel chiamante Detto questo, ho del codice così scritto, che serve a inserire un nuovo elemento in una lista linkata (struct formata da char* + puntatore a nuovo elemento). Salto i dettagli dell'algoritmo. Codice:
int put_nuovo_valore(Valore *lista,char *nuovo_valore) Questo dovrebbe essere un passaggio per riferimento, quindi se modifico il puntatore "lista", dovrei vedermi modificata la struttura dati nel chiamante. Questo non avviene, e non capisco come mai. Qualcuno può darmi una mano? grazie Davide |
Quote:
Nel caso di Valore *lista, fare lista=malloc() modifica la copia locale del puntatore, non ciò a cui esso punta. Per raggiungere il tuo scopo si usa passare alla funzione Valore **lista (passando quindi l'indirizzo del puntatore) facendo poi *lista=malloc() |
Tutti gli orari sono GMT +1. Ora sono le: 22:01. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.