Looking for pointers Answers? Try Ask4KnowledgeBase
Looking for pointers Keywords? Try Ask4Keywords

pointersIniziare con i puntatori


Osservazioni

Questa sezione fornisce una panoramica di quali sono i puntatori e perché uno sviluppatore potrebbe volerlo utilizzare.

Dovrebbe anche menzionare qualsiasi argomento di grandi dimensioni all'interno dei puntatori e collegarsi agli argomenti correlati. Poiché la Documentazione per i puntatori è nuova, potrebbe essere necessario creare versioni iniziali di tali argomenti correlati.

Iniziare con i puntatori

I puntatori sono variabili che memorizzano l'indirizzo di un'altra variabile. Come caratteristica della lingua sono disponibili in diversi linguaggi di programmazione come, ma non limitati a:

  • Partire
  • C / C ++
  • Ada
  • Pascal
  • C # (disponibile in base a determinati vincoli)
  • COBOL
  • FORTRAN

Per iniziare con i puntatori C / C ++, attenersi alla seguente procedura

  1. Installa il compilatore come GNU minimalista per Windows, http://www.mingw.org/wiki/Getting_Started

  2. Ad esempio, vai alla cartella di installazione di binario g ++ tramite riga di comando:

    C:\MinGW\bin>
     

3. Crea un file di testo e scrivi questo programma C ++

#include <iostream>

int main () {

   int  pointed=0;
   int* ptr = & pointed;

   std::cout<<"Address of pointed variable is: "<<ptr<<std::endl;

   return 0;
}
 
  1. Salva come pointer.cpp 5. Sul prompt dei comandi eseguire il comando

g ++ -o pointer.exe -c pointer.cpp

  1. Nella directory di lavoro si ottiene un eseguibile come pointer.exe, questo exe in esecuzione darà un po 'di output

L'indirizzo della variabile puntata è: 0x7e892dac0a0c

Se si riceve l'output di cui sopra, è stato scritto il primo programma di puntatore

Cos'è un puntatore?

È fondamentalmente l'indirizzo di una variabile in memoria. Ci consente di accedere indirettamente a una variabile. Quindi usando i puntatori possiamo parlare dell'indirizzo di una variabile (così come del suo valore dereferenziando il puntatore). Sono utili quando vogliamo gestire l'indirizzo di una locazione di memoria piuttosto che il suo valore.

Si consideri la seguente funzione di scambio semplice in C:

void Swap(int firstVal, int secondVal)
{
 int tempVal = firstVal;
 firstVal = secondVal;
 secondVal = tempVal;
}
 

ora in main se abbiamo il seguente codice:

.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
 

I valori di a e b rimarrebbero invariati come sarebbe chiaro stampando i loro valori nella funzione principale. Per implementare correttamente la funzione di scambio, anziché passare i valori delle variabili a e b , passiamo l'indirizzo delle variabili a e b come:

swap(&a,&b);
 

L'operatore & , restituisce l'indirizzo della variabile. È usato in questo modo:

int *address_of_a = &a;
 

l' int *address_of_a , afferma che la variabile address_of_a punta a (memorizza l'indirizzo di) una variabile intera.

Ora la nostra corretta funzione di scambio sarebbe:

void Swap(int *firstaddress, int *secondaddress)
{
 int tempVal = *firstaddress;
 *firsaddress = *secondaddress;
 *secondaddress = tempVal;
}
 

Ora i valori intercambiati si rifletterebbero nella funzione principale:

int a = 9,b = 100;
swap(&a,&b);
//print
 

Puoi sempre rimuovere il puntatore usando * , se non hai la variabile originale. Supponiamo che se in una funzione non si abbia la variabile originale ma si abbia il suo indirizzo in una variabile puntatore int *x . Possiamo semplicemente accedere al valore dell'indirizzo di memoria come value = *x ;

Se non avessimo i puntatori, non potremmo mai emulare il passaggio per riferimento in C , poiché C è un valore passante . Ma ricorda che possiamo solo emulare , perché anche quando usiamo i puntatori, int *firstaddress, int *secondaddress sono solo variabili puntatore locali create, che hanno l'indirizzo delle variabili a e b .