- Messaggi: 376
- Ringraziamenti ricevuti 38
Puntatori
- Matteo Garia
-
Autore della discussione
- Moderatore
-
Less
Di più
12 Anni 5 Mesi fa #1
da Matteo Garia
Puntatori è stato creato da Matteo Garia
Buonasera,
quando si dichiara un puntatore solitamente si indica anche il tipo, per esempio:
se provo ad usarlo per puntare una variabile di tipo diverso, però, giustamente mi becco il warning:
Il codice funziona ugualmente, ma avere un warning non è bella cosa...
esiste un modo per poter puntare tipi di variabili diverse con lo stesso puntatore?
Grazie
Matteo
quando si dichiara un puntatore solitamente si indica anche il tipo, per esempio:
Code:
signed int *puntatore
se provo ad usarlo per puntare una variabile di tipo diverso, però, giustamente mi becco il warning:
Code:
warning: illegal conversion between pointer types
pointer to unsigned char -> pointer to int
Il codice funziona ugualmente, ma avere un warning non è bella cosa...
esiste un modo per poter puntare tipi di variabili diverse con lo stesso puntatore?
Grazie
Matteo
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Fendo
- Giovane Utente
-
Less
Di più
- Messaggi: 39
- Ringraziamenti ricevuti 4
12 Anni 5 Mesi fa #2
da Fendo
Ciao
Ferdinando
Risposta da Fendo al topic Re: Puntatori
... non so se il CAST funziona sui puntatori, è giusto che ti dia warning perchè un puntatoe di tipo integer incrementa o decrementa in modo diverso da un puntatore char piuttosto che un float o di un puntatore a struttura.
Ciao
Ferdinando
Si prega Accesso o Crea un account a partecipare alla conversazione.
12 Anni 5 Mesi fa #3
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Puntatori
Si, il casting funziona anche con i puntatori.
pero', sebbene il casting permetta di eliminare il Warning, bisogna essere certi che non ci sia overflow della variabile.
Il codice funziona perche' il compilatore fa una promozione della variabile per il caso peggiore.
Saliti,
Mauro
pero', sebbene il casting permetta di eliminare il Warning, bisogna essere certi che non ci sia overflow della variabile.
Il codice funziona perche' il compilatore fa una promozione della variabile per il caso peggiore.
Saliti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Matteo Garia
-
Autore della discussione
- Moderatore
-
Less
Di più
- Messaggi: 376
- Ringraziamenti ricevuti 38
12 Anni 5 Mesi fa - 12 Anni 5 Mesi fa #4
da Matteo Garia
Risposta da Matteo Garia al topic Re: Puntatori
Grazie delle risposte 
Mi serviva un puntatore usabile con 4 tipi di variabile, per ora, cioè char (signed ed unsigned) e int (signed ed unsigned).
Faccio qualche prova con il casting, vediamo se funziona tutto
Giusto per curiosità, un puntatore quanto occupa in memoria? la lunghezza dell'indirizzo oppure lo stesso spazio della variabile?
Matteo

Mi serviva un puntatore usabile con 4 tipi di variabile, per ora, cioè char (signed ed unsigned) e int (signed ed unsigned).
Faccio qualche prova con il casting, vediamo se funziona tutto

Giusto per curiosità, un puntatore quanto occupa in memoria? la lunghezza dell'indirizzo oppure lo stesso spazio della variabile?
Matteo
Ultima Modifica 12 Anni 5 Mesi fa da Matteo Garia.
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Fendo
- Giovane Utente
-
Less
Di più
- Messaggi: 39
- Ringraziamenti ricevuti 4
12 Anni 5 Mesi fa #5
da Fendo
Ciao
Ferdinando
Risposta da Fendo al topic Re: Puntatori
... la lunghezza dell'indirizzo. Infatti il puntatore è l'indirizzo della variabile a cui punti. Cambia solo di quanto varia se si in(de)crementa. Un puntatore ad unsigned char in(de)crementerà di una sola posizione di memoria perchè char è lungo 8 bit (un byte) mentre per un integer ne aumenterà di due visto che l'integer è lungo 16 bit, quindi due byte .
Spero di non avere creato confusione :huh:
Con puntatore char
_________
|____A____| 0001 <- Puntatore_Char
|____B____| 0002 <- Puntatore_Char ++
|_________| 0003
|_________| 000n-1
|_________| 000n
Con puntatore integer
__________
|__0x00___| 0001 <- Puntatore_Int
|__0x01___| 0002
|__0x0e___| 0003 <- Puntatore_Int ++
|__0xff____| 0004
|_________| 000n-1
|_________| 000n
Spero di non avere creato confusione :huh:
Con puntatore char
_________
|____A____| 0001 <- Puntatore_Char
|____B____| 0002 <- Puntatore_Char ++
|_________| 0003
|_________| 000n-1
|_________| 000n
Con puntatore integer
__________
|__0x00___| 0001 <- Puntatore_Int
|__0x01___| 0002
|__0x0e___| 0003 <- Puntatore_Int ++
|__0xff____| 0004
|_________| 000n-1
|_________| 000n
Ciao
Ferdinando
Si prega Accesso o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, StefA
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- progetto can
- da marcelloraja
-
- MODULO GSM SIM900A
- da Mauro Laurenti
-
- Freedom III e compilazioni fallite
- da Mauro Laurenti
-
- Gestione degli errori su comunicazione seriale
- da Mauro Laurenti
-
- Timer0 e interrupt
- da Mauro Laurenti