Ciao e bentornato. Abbiamo un'altra sfida per te.
In questa sfida, voglio che tu impari tutto sull'aritmetica dei puntatori.
Ricorda, l'aritmetica dei puntatori è un concetto davvero accurato.
È un concetto notazionale.
Ma illustra davvero come gli array
sono correlati ai puntatori. Puoi attraversare un array molto facilmente con
una sintassi molto semplice che riduce la tua riga di codice ed è
un concetto davvero accurato.
Quindi imparerai tutto sull'aritmetica dei puntatori.
Impareremo anche di più sul modificatore costante.
Quindi, in questa sfida, voglio che tu scriva un
programma che verifica la tua comprensione dell'aritmetica dei puntatori e del modificatore const.
Abbiamo imparato entrambi questi concetti nelle lezioni precedenti.
Quindi voglio che tu scriva una funzione che calcola la lunghezza della stringa.
I requisiti sono che la funzione dovrebbe prendere come parametro un puntatore a caratteri costanti.
Un puntatore a carattere costante significa che non è possibile modificare il valore di ciò
a cui punta il puntatore e
non lo farai con la lunghezza.
La funzione può determinare la lunghezza della stringa solo utilizzando l'aritmetica del puntatore.
Non voglio che tu usi la funzione str length. Voglio che tu usi l'aritmetica dei puntatori.
E il modo in cui immagino che questa
funzione venga implementata è che otterrai l'indirizzo dell'estremità del puntatore.
Questa sarebbe essenzialmente la lunghezza del puntatore.
Ma il modo in cui puoi ottenere l'indirizzo dell'ultima stringa e il puntatore è che puoi
scrivere un ciclo while.
Il ciclo while può arrivare fino al carattere di terminazione null.
O il carattere di terminazione null, ricorda, che
è rappresentato come int.
Quindi il terminatore nullo è in realtà uno zero. Quindi potresti scrivere un
ciclo while e tutto il ciclo while deve includere nella
sua condizione è dereferenziare il puntatore.
Perché se il valore del puntatore di riferimento d è zero, salta fuori dal
ciclo e quello sarebbe il terminatore nullo.
Quindi voglio che tu esamini
l'intero puntatore.
E mentre lo attraversi,
continua ad aumentare il puntatore.
Quindi ora hai un puntatore che punta alla fine della stringa.
Quindi per calcolare effettivamente la lunghezza, tutto ciò che
devi fare è meno due puntatori.
Il puntatore che è stato passato in cui è
l'inizio della stringa e poi
il puntatore che hai creato nella funzione che punta alla fine della stringa.
Se meno la fine del puntatore della stringa dall'inizio del
punto della stringa, avrai la lunghezza della stringa.
Quindi eseguirai l'aritmetica del puntatore incrementando il
puntatore uno alla volta per arrivare all'indirizzo finale e poi
utilizzerai l'aritmetica dei punti per sottrarre ogni puntatore.
Questo è probabilmente il modo più valido per utilizzare l'aritmetica
dei punti per la sottrazione. Di solito non aggiungi due
puntatori perché perché dovresti aggiungere due indirizzi.
È possibile sottrarre due indirizzi per ottenere la distanza tra due elementi in
un array, ciò avrebbe
senso, ma l'aggiunta non lo sarà. Quindi, solo per ribadire, la funzione
può determinare la lunghezza della stringa solo utilizzando l'aritmetica dei punti.
Crea un puntatore locale nella tua
funzione, incrementalo ogni volta per arrivare alla fine finché non
vedi un terminatore nullo, un semplice ciclo while.
E poi una volta che hai l'indirizzo finale, hai già
l'indirizzo iniziale, sottrai quei due puntatori che ti daranno la lunghezza.
Dovresti restituire quella lunghezza come un int dalla funzione.
E poi puoi semplicemente stampare la lunghezza effettiva stessa.
Quindi questo compito ti aiuta a familiarizzare con l'aritmetica dei
punti e anche come usare il modificatore costante perché non vuoi cambiare il
valore effettivo a cui punta e
sottraendo anche due puntatori e anche usando un ciclo while dove
puoi guardare il valore stesso del puntatore per
determinare il carattere nullo. In bocca al lupo.
Fornirò una soluzione nella prossima lezione. Grazie.