Codice Unsafe e Puntatori



Un puntatore è una variabile che invece di contenere un valore contiene l’indirizzo di memoria di un’altra variabile.
I puntatori si dichiarano così:

tipo *nome;

Per ricavare l’indirizzo di una variabile esistente, invece, si utilizza l’operatore &.
Facciamo un esempio:

int v = 10;
int *p = &v;

Nella prima riga dichiariamo una normale variabile, nella seconda dichiariamo un puntatore che punta all’indirizzo di v.
L’operatore * serve anche a leggere il valore contenuto nella variabile puntata dal puntatore.
Ad esempio, continuando l’esempio precendente:

int b = *p;

Farebbe si che nella variabile b ci sia il valore 10, ossia il valore della variabile puntata da p: v.

Il concetto dei puntatori non è molto semplice, quindi per maggiori informazioni si rimanda ad una qualsiasi guida completa sul loro utilizzo.

Ora però veniamo al dunque, cioè come si implementano questi puntatori in C#. In linguaggi come C e C++ è sempre possibile usare puntatori nei programmi, questo non è vero per il C#. Quest’ultimo linguaggio, infatti, non permette l’uso di codice potenzialmente insicuro quali sono i puntatori, quindi per poterli inserire è necessario utilizzare la parola chiave unsafe.
Un semplice esempio:

using System;

class Test {
public static vodi Main(string[] args)
{
int v = 4;
unsafe {
int *p = &v;
*p += 5;
}
Console.WriteLine(v); //9
}
}

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest