Puntatori

  • Matteo Garia
  • Autore della discussione
  • Moderatore
  • Moderatore
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:
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
  • Giovane Utente
Di più
12 Anni 5 Mesi fa #2 da Fendo
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.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
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

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Matteo Garia
  • Autore della discussione
  • Moderatore
  • Moderatore
Di più
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
Ultima Modifica 12 Anni 5 Mesi fa da Matteo Garia.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Fendo
  • Giovane Utente
  • Giovane Utente
Di più
12 Anni 5 Mesi fa #5 da Fendo
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

Ciao
Ferdinando

Si prega Accesso o Crea un account a partecipare alla conversazione.

Moderatori: Mauro LaurentiStefA

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Forum - Ultimi messaggi