dissabte, 22 d’abril del 2017

Els punters en C#

Què és un punter? 

La paraula "punter" s'usa per a referir-se a una direcció de memòria. El que té d'especial és que normalment un punter tindrà un tipus de dades associat: per exemple, un "puntero a entero" serà una direcció de memòria en què haurà emmagatzemat (o podrem emmagatzemar) un nombre enter. 

El fet de poder accedir directament al contingut de certes posicions de memòria dóna una major versatilitat a un programa, perquè permet fer quasi qualsevol cosa, però a canvi d'un risc d'errors molt major.

En llenguatges com C, és imprescindible utilitzar punters per a poder crear estructures dinàmiques, però en C# podem "esquivarlos", atés que tenim diverses estructures dinàmiques ja creades com a part de les biblioteques auxiliars que acompanyen al llenguatge bàsic. Així i tot, veurem algun exemple que ens mostre què és un punter i com s'utilitza. 

En primer lloc, comentem la sintaxi bàsica que utilitzarem:

int numere;         /* "numero" és un nombre enter */ 
int* posició;       /* "posicion" és un "puntero a entero" (direcció                      de memòria en què podrem guardar un sencer) */


És a dir, escriurem un asterisc entre el tipus de dades i el nom de la variable. Eixe asterisc pot anar junt amb qualsevol d'ambdós, per la qual cosa també és correcte escriure.

int *posicio;

El valor que guarda "posicion" és una direcció de memòria. Generalment no podrem fer coses com posicion=5; perquè res ens garantix que la posició 5 de la memòria estiga disponible perquè nosaltres la usem. Serà més habitual que prenguem una direcció de memòria que ja conté una altra dada, o bé que li demanem al compilador que ens reserve un espai de memòria (més avant veurem com).

Si volem que "posicion" continga la direcció de memòria que el compilador havia reservat per a la variable "numero", ho faríem usant el símbol "&", així:

posicio = №


Cap comentari:

Publica un comentari a l'entrada