Bonjour et bienvenue à nouveau. Nous avons un autre défi pour vous.
Dans ce défi, je veux que vous appreniez tout sur l'arithmétique des pointeurs.
N'oubliez pas que l'arithmétique des pointeurs est un concept vraiment intéressant.
C'est un concept de notation.
Mais cela illustre vraiment comment les tableaux
sont liés aux pointeurs. Vous pouvez parcourir un tableau très facilement
avec une syntaxe très simple qui réduit votre ligne de code et c'est
un concept vraiment soigné.
Vous allez donc tout apprendre sur l'arithmétique des pointeurs.
Nous allons également en savoir plus sur le modificateur constant.
Donc, dans ce défi, je veux que vous écriviez
un programme qui teste votre compréhension de l'arithmétique des pointeurs et du modificateur const.
Nous avons appris ces deux concepts dans les conférences précédentes.
Je veux donc que vous écriviez une fonction qui calcule la longueur de la chaîne.
Les exigences sont que la fonction doit prendre comme paramètre pointeur de caractère constant.
Un pointeur de caractère constant signifie que vous ne pouvez pas changer la valeur de ce
vers quoi le pointeur pointe, et vous
n'allez pas le faire avec la longueur.
La fonction peut uniquement déterminer la longueur de la chaîne à l'aide de l'arithmétique du pointeur.
Je ne veux pas que vous utilisiez la fonction de longueur de chaîne. Je veux que vous utilisiez l'arithmétique du pointeur.
Et la façon dont j'envisage cette fonction à implémenter
est que vous allez obtenir l'adresse de la fin du pointeur.
Ce serait essentiellement la longueur du pointeur.
Mais la façon dont vous pouvez obtenir l'adresse de la dernière chaîne et le pointeur est que vous
pouvez écrire une boucle while.
La boucle while peut aller jusqu'au caractère de terminaison nul.
Ou le caractère de terminaison nul, rappelez-vous, qui
est représenté par int.
Ainsi, le terminateur nul est en fait un zéro. Vous pouvez donc écrire une
boucle while et tout le temps que la boucle while doit inclure
dans sa condition est de déréférencer le pointeur.
Parce que si la valeur du pointeur de référence d est zéro, sortez de la
boucle et ce serait le terminateur nul.
Je veux donc que vous parcouriez tout
le pointeur.
Et pendant que vous le
parcourez, continuez à incrémenter ce pointeur.
Alors maintenant, vous avez un pointeur qui pointe vers la fin de la chaîne.
Ensuite, pour calculer réellement la longueur, tout ce que vous avez
à faire est de moins deux pointeurs.
Le pointeur qui a été passé dans lequel se trouve le
début de la chaîne, puis le pointeur
que vous avez créé dans la fonction qui pointe vers la fin de la chaîne.
Si vous moins la fin du pointeur de chaîne à partir du début
du point de chaîne, vous aurez la longueur de la chaîne.
Vous allez donc faire de l'arithmétique du pointeur en
incrémentant le pointeur un par un pour arriver à l'adresse de fin,
puis vous utiliserez l'arithmétique de point pour soustraire chaque pointeur.
C'est probablement la manière la plus valable d'utiliser l'arithmétique
des points pour la soustraction. Vous n'ajoutez généralement pas deux
pointeurs, car pourquoi ajouteriez-vous deux adresses.
Vous pouvez soustraire deux adresses pour obtenir à quelle distance se trouvent deux éléments dans
un tableau, cela aurait du
sens, mais l'ajout ne le sera pas. Donc, juste pour répéter, la fonction ne
peut déterminer la longueur de la chaîne qu'en utilisant l'arithmétique ponctuelle.
Créez un pointeur local dans votre fonction,
incrémentez ce pointeur à chaque fois pour arriver à la fin jusqu'à ce
que vous voyiez un terminateur nul, une simple boucle while.
Et puis une fois que vous avez l'adresse de fin, vous avez
déjà l'adresse de début, soustrayez ces deux pointeurs qui vous donneront la longueur.
Vous devez renvoyer cette longueur sous la forme d'un int à partir de la fonction.
Et puis, vous pouvez simplement imprimer la longueur réelle elle-même.
Donc, cette affectation vous familiarise avec l'arithmétique des points et
comment utiliser le modificateur constant, car vous ne voulez pas changer la valeur
réelle vers laquelle il pointe et
soustraire deux pointeurs ainsi que l'utilisation d'une boucle while où vous
pouvez regarder la valeur du pointeur elle-même pour
déterminer le caractère nul. Bonne chance.
Je fournirai une solution dans la prochaine conférence. Merci.