PDA

Visualizza la versione completa : Linguaggio C - puntatori


alphard
24-06-2009, 22:45
ciao ragazzi

dando un occhiata al codice in fondo a qst pagina (http://www.aleax.it/TutWin32/p7.htm) trovo strano il fatto ke dopo aver richiamato la API

SendMessage(hStat, WM_GETTEXT, 6, (LPARAM)buff);

alloca nella variabile puntatore pTesto il valore "Salve" o "Ciao" a seconda della IF
:confused: :confused: :confused:
ke vuol dire?

ke il contenuto, ossia l'indirizzo di memoria che dovrebbe contenere viene sovrascritto con la stringa????

una tecnica valida?
ke vantaggio si trova?

saluti

MItaly
24-06-2009, 23:27
Originariamente inviato da alphard
alloca nella variabile puntatore pTesto il valore "Salve" o "Ciao" a seconda della IF
:confused: :confused: :confused:

Non alloca un bel niente, semplicemente assegna a pTesto l'indirizzo della stringa "Ciao" (o "Salve", a seconda), stringhe che risiedono nella tabella delle stringhe dell'eseguibile.


ke il contenuto, ossia l'indirizzo di memoria che dovrebbe contenere viene sovrascritto con la stringa????

Qual il soggetto/il complemento oggetto della frase "che dovrebbe contenere"?


una tecnica valida?
ke vantaggio si trova?

Rispetto a quale altra tecnica?

Spiegati meglio, e soprattutto evita di scrivere come se fosse un SMS.

alphard
24-06-2009, 23:38
ciao

vorrei capire cosa succede di preciso con l'istruzione

pTesto = "Salve";



Non alloca un bel niente, semplicemente assegna a pTesto l'indirizzo della stringa "Ciao" (o "Salve", a seconda), stringhe che risiedono nella tabella delle stringhe dell'eseguibile.

e gi che ci siamo sapere cos' la tabella delle stringhe.

MItaly
25-06-2009, 16:37
Originariamente inviato da alphard
ciao

vorrei capire cosa succede di preciso con l'istruzione

pTesto = "Salve";

Al puntatore pTesto viene assegnato l'indirizzo della stringa "Salve", che risiede nella tablla delle stringhe dell'eseguibile.


e gi che ci siamo sapere cos' la tabella delle stringhe.
Generalmente gli eseguibili hanno al loro interno una tabella di stringhe, che contiene tutte le stringhe che il programmatore ha inserito nel codice (come, appunto, le stringhe "Salve" e "Ciao" dell'esempio) in sequenza. Quando viene avviato un eseguibile esso viene mappato tutto o in parte in memoria e l modificato pi o meno pesantemente ( un processo che dipende strettamente dal formato di eseguibile impiegato), ma in linea di massima la tabella delle stringhe viene sempre mappata in memoria; questo quindi consente il funzionamento dell'istruzione in questione.

Loading