Aritmetica del puntatore C ++

Aritmetica del puntatore C ++

Sappiamo che i puntatori sono indirizzi di memoria delle variabili e sono numerici in generale. Ecco perché possiamo fare anche alcuni calcoli aritmetici sui puntatori. Questi calcoli possono essere fatti come facciamo sui valori numerici in matematica o programmazione. Pertanto, discuteremo di alcune operazioni aritmetiche sui puntatori all'interno della nostra guida tutorial usando C++. Abbiamo usato Ubuntu 20.04 Sistema Assicurarsi di configurare il compilatore G ++. Cominciamo con l'implementazione dell'aritmetica del puntatore in Ubuntu 20.04 Shell del terminale di sistema con l'aiuto di una scorciatoia Ctrl+Alt+T utilizzata sul suo desktop.

Esempio 1:

Inizia il primo esempio del codice C ++ per utilizzare gli operatori aritmetici "+" sui puntatori mediante creazione di file. Puoi creare un file in molti modi, ma quello più semplice è l'uso dell'istruzione "tocco". Pertanto, abbiamo provato la parola chiave touch insieme al titolo di un file da formare sulla console e premuto Invio. Il file viene creato in Ubuntu 20.04 cartella domestica.

Ora, per aprire questo file appena creato, è possibile utilizzare uno qualsiasi degli editori integrati forniti con Ubuntu 20.04 i.e. Vim, editor di testo o editore GNU Nano. Ti suggeriamo di utilizzare l'editor GNU Nano come lo abbiamo usato nella shell come dimostrato dall'immagine qui sotto.

Questo file “Pointer.CC ”è non sborsato nell'editore finora. Abbiamo incluso il file di intestazione del flusso input-output alla prima riga e lo spazio dei nomi standard è stato utilizzato nella seconda riga. Abbiamo inizializzato una variabile intera "V" con un valore di 8. Nella prossima riga consecutiva, abbiamo inizializzato un puntatore di tipo intero "P". Questo puntatore è l'indirizzo di una variabile "V" in quanto è vincolata dalla variabile "V" usando il segno "&". Ciò significa che possiamo cambiare l'indirizzo di un mutabile in qualsiasi momento. Le dichiarazioni standard Cout sono state usate una dopo l'altra. Il primo sta visualizzando l'indirizzo originale della variabile "V" salvata come puntatore "P".

Nella riga successiva, l'istruzione Cout ha incrementato l'indirizzo del puntatore di 1 e la visualizzazione. Le due righe successive hanno usato il puntatore e aumentando il suo valore di 2 e 3. I valori incrementati sono stati visualizzati con l'istruzione Cout. Il codice termina qui. Salviamo il codice prima dell'esecuzione. Usa ctrl+s per questo scopo. Devi lasciare l'editore GNU Nano per tornare al terminale. Utilizzare la chiave di scelta rapida "Ctrl+X" per questo scopo. Questo era il codice C ++ più semplice per incrementare il puntatore usando l'operatore+.

Dopo essere tornato alla shell, dobbiamo rendere il nostro codice senza errori. Il compilatore C ++ viene utilizzato per questa perseveranza. La parola chiave del compilatore "G ++" è stata utilizzata insieme al nome di un file da compilare i.e. “Pointer.CC ". La compilation ha successo in quanto puoi vedere che non restituisce nulla. Eseguiamo il nostro codice senza errori usando il "./UN.comando standard. Abbiamo ottenuto i 4 indirizzi diversi per "V" variabile.

Il primo è l'indirizzo originale "P" di variabile "V". Il secondo è incrementato di 1, il terzo viene incrementato dal valore 2 e l'ultimo è incrementato di 3. Ogni volta che eseguiamo l'incremento, gli ultimi due caratteri di un indirizzo tendono a cambiare come mostrato sotto.

Esempio 2:

Facciamo un altro esempio per utilizzare l'operatore di decremento su un puntatore. Quindi, abbiamo consumato lo stesso vecchio file "puntatore.CC ". L'intestazione dello spazio dei nomi e dell'input-output sono usati come abbiamo fatto prima. Un'altra variabile intera costante “S” è inizializzata con un valore costante di 5. All'interno del metodo principale (), abbiamo usato un array di tipo intero chiamato "V" di dimensioni "s" con 5 elementi in esso. Il puntatore intero "P" è stato dichiarato. Il puntatore è stato vincolato con l'array intero "V" usando il segno "&".

La dimensione sarà iniziata dall'indirizzo S-1. Il ciclo "per" è stato inizializzato che viene avviato dalla dimensione 5 e funziona nell'ordine decrescente diminuendo di 1 ogni volta. Ogni volta che il loop "per" funziona, visualizza l'indirizzo di memoria del numero dell'indice iterato dal ciclo e il valore in un determinato indice utilizzando l'istruzione Cout standard. La "P" dimostra l'indirizzo dell'indice, mentre la *p rappresenta il valore in quel particolare indice. In ogni iterazione, il puntatore è stato decrementato di 1. Il ciclo termina qui e anche la funzione principale.

Compila prima il codice con il compilatore G ++ del linguaggio C ++. Funziona con successo senza errori. L'esecuzione viene eseguita da "./UN.comando fuori ". Abbiamo ottenuto l'output come mostrato di seguito. Puoi vedere, abbiamo ogni indirizzo di memoria per un particolare indice i.e. 5,4,3,2,1 nell'ordine decrescente degli indici. D'altra parte, abbiamo anche ottenuto i valori ad ogni particolare indice ogni volta che il loop iterate nell'ordine decrescente fino all'ultimo valore.

Esempio 3:

Facciamo una nuova istanza di puntatori. All'interno di questo esempio, confronteremo gli indirizzi del puntatore e i valori che contengono. Pertanto, il puntatore del documento.CC è ora lanciato nell'editore GNU Nano. La funzione principale () è stata inizializzata dopo lo spazio dei nomi standard e l'intestazione del flusso "IO" nel file di codice. Contiene due variabili di tipo stringa S1 e S2 con valori di stringa completamente diversi i.e. "Aqsa" e "Yasin".

Successivamente, abbiamo inizializzato le variabili di puntatore a due stringa P1 e P2 delimitate da entrambe le variabili S1 e S2 usando il carattere "&" dopo il segno "=". Ciò significa che il puntatore P1 è l'indirizzo della variabile S1 e P2 è l'indirizzo della variabile S2.

La prima clausola COUT standard viene utilizzata per mostrare il risultato di confronto di entrambi i puntatori i.e. indirizzi di entrambe le variabili di stringa. Se gli indirizzi sono gli stessi, visualizzerà 1 come vero altrimenti 0 come falso sulla shell. La seconda clausola Cout standard viene utilizzata per visualizzare il risultato di confronto dei valori memorizzati nell'indirizzo del puntatore specifico. Se i valori sono gli stessi, restituirà 1, altrimenti 0. Il programma di confronto termina qui.

Compila prima il codice C ++ ed eseguilo. Ne abbiamo 0 come risultato di entrambi i confronti i.e. falso. Ciò significa che sia gli indirizzi e i valori del puntatore a tali indirizzi non sono gli stessi.

Cambiamo un po 'il codice. Apri lo stesso file e aggiorna i valori di stringa. Le stesse variabili di stringa S1 e S2 sono state inizializzate con gli stessi valori i.e. Aqsa. Il resto del codice è usato invariato come abbiamo fatto prima. Salva il tuo codice per ottenere il risultato aggiornato.

Abbiamo ottenuto 0 come risultato di confronto degli indirizzi del puntatore poiché entrambe le variabili contengono diversi indirizzi di memoria e 1 come risultato del confronto del valore i.e. Stessi valori di entrambe le stringhe.

Conclusione:

Abbiamo discusso delle operazioni aritmetiche eseguite sui puntatori. Abbiamo usato l'incremento e il decremento degli operatori aritmetici su puntatori. Abbiamo anche discusso degli esempi bonus per illustrare il funzionamento dell'operatore di confronto su due diversi suggerimenti.