|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
[C++] quali sono le differenze tra char e char *?
non riesco a capire... a volte il compilatore mi dice che devo aggiungere questo asterisco prima della variabile ma non ho la minima idea del perche.
che differenza passa tra char e char *? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 5206
|
Quote:
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Scrivo C ma intendilo come C e altri.
Nel codice sorgente di un programma, una variabile è l'etichetta di un indirizzo e l'indirizzo è quello di una cella di memoria (o della prima di una serie di celle) che contiene un valore. x <- etichetta ad uso umano dell'indirizzo immaginario 234234 10 <- valore contenuto nella cella di memoria di indirizzo 234234 Esiste un tipo particolare di variabile che in verità è convenzionalmente particolare. La convenzione sta nel significato del valore contenuto nella cella di memoria di indirizzo "x". La convenzione stabilisce che accanto al significato "diretto", il 10 contenuto nella "cella di indirizzo x", se ne possa dare uno "indiretto": il 10 contenuto nella cella di indirizzo x non è una mera quantità ma è interpretabile anche come l'indirizzo di un'altra cella. A questo punto hai in mano un'etichetta, x, ed un valore 10 con l'inghippo che "10" può significare due cose: o è una quantità pura e semplice, come per ogni altra variabile, o è interpretabile come il valore di un indirizzo di memoria (la cella 10, qualsiasi cosa possa significare). Avendo una sola quantità ma due significati ecco che emerge la necessità di distinguere in qualche modo quale significato sia richiesto dal programmatore quando il codice sorgente proponga una variabile il cui valore sia passibile di questa duplice interpretazione. In C, quando una variabile sia dichiarata "bìfida" (e infìda char* pippo; ogni volta che usi l'etichetta "pippo" devi specificare quale significato vuoi attribuire al valore contenuto in "pippo". Se vuoi che il valore contenuto in "pippo" sia considerato come mera quantità (unica quantità, significato diretto), usi: pippo Se vuoi che il valore di "pippo" sia considerato come indirizzo di memoria (unica quantità, significato indiretto), usi: *pippo In C le istruzioni che coinvolgono variabili, cioè indirizzi (una variabile è l'etichetta umanamente comprensibile apposta ad un indirizzo di memoria), hanno effetto sulle quantità conservate nella regione di memoria indirizzata. Così quando dichiari di voler usare il significato indiretto della quantità indirizzata dalla variabile: *pippo C si trova davanti una quantità, esattamente come capita per ogni variabile, che deve tuttavia interpretare come indirizzo. *pippo >> variabile, prendi la quantità indirizzata >> *, quella quantità è un indirizzo! >> prendi la quantità indirizzata dalla quantità indirizzata da pippo. Il (pessimo Circa la necessità di usare i puntatori è eminentemente pratica. Permettono ad un sistema di condividere dinamicamente informazioni tra parti altrimenti irrelate. Di riflesso, consentono lo scambio di informazioni attraverso la condivisione di una minima parte di queste, il che è vantaggioso se lo scambio deva essere particolarmente frequente o se le dimensioni dell'informazione siano corpose. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:24.



















