![]() |
Mòdul
5
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Pràctica
d'ampliació ![]() ![]() |
Primer contacte amb els punters. En aquesta primera pràctica aprendrem a declarar un punter, assignar-li l'adreça d'una variable i entendre els operadors & i *.
|
|||||||||||||
![]() |
Desenvolupament de la pràctica
Abans de tot, creeu un nou espai de treball per aquest mòdul amb el nom: m5. Aneu afegint un projecte nou del tipus Win32 Console Application per cada nova pràctica o exercici amb els noms que cada vegada es proposi. Definiu un projecte nou anomenat m5p01 i afegiu-li un arxiu de font C/C++ anomenat m5p01.cpp. Escriviu el següent codi:
Explicació del programa Si executem el programa, la sortida serà
semblant a la següent (el valor de les adreces poden canviar d'una execució a
una altra):
El primer que hem d'observar en el programa anterior és la línia de declaració:
En aquesta línia es declaren simultàniament tres variables, dues variables enteres i, i j i una variable punter a enter anomenada ptr_enter. En les següents línies s'ordena que surti per pantalla les adreces de les tres variables,
Per defecte, les adreces surten en format hexagesimal. Fixeu-vos que l'ordre per emmagatzemar aquestes variables és l'ordre invers d'escriptura en la línia i que totes tres ocupen 4 octets de memòria (de fet, només es pot comprovar aquesta circumstància amb les variables *ptr_enter i j ). A continuació s'assigna el valor 10 a la variable i. Amb la següent sentència de sortida es pot comprendre la diferència entre &i i i. Mentre que i mostra el valor de la variable, &i mostra l'adreça on està emmagatzemada la variable i.
La següent línia és una assignació d'un valor a la variable punter. Evidentment, aquest valor és una adreça de memòria, l'adreça de la variable i:
Les següents sentències mostren la diferència entre el valor del punter i la seva adreça:
Totes dues coses són adreces. Es pot comprovar que el contingut de la variable ptr_enter coincideix amb l'adreça de la variable i mostrada anteriorment. També es pot comprovar el significat de l'operador d'indirecció * que mostra el valor 10, és a dir, el valor de la variable apuntada pel punter. Per últim, hi ha una sentència on s'assigna el valor de la variable apuntada pel punter (10) a la variable j. La sentència de sortida següent permet comprovar que l'adreça de la variable j no ha canviat i sí el seu valor que ara val 10.
|