Bonjour et bienvenue à nouveau.
Dans cette conférence, je veux parler de la relation entre les pointeurs et les tableaux.
Il existe une relation solide et nous devons comprendre cette relation avant de
pouvoir parler d'arithmétique des pointeurs. Alors, commençons.
Un tableau est une collection d'objets du même type auxquels
vous pouvez vous référer en utilisant un seul nom. Nous savons que nous sommes assez bons dans les tableaux maintenant.
Nous utilisons le tableau de caractères depuis quelques sections maintenant.
C'est un tableau auquel vous pouvez accéder en utilisant un index
ou un indice entre ces crochets. Nous nous en souvenons.
Nous savons que les tableaux sont basés sur zéro, ils commencent à zéro.
Mais encore une fois, c'est juste un moyen de conserver plusieurs mois avec le même nom de variable.
Un pointeur est une variable qui a sa valeur, une adresse mémoire comme
valeur, et il
peut référencer une autre variable ou constante d'un type donné.
Nous devrions également à ce stade être assez clairs sur ce qu'est un pointeur.
Il contient juste une adresse mémoire.
Vous pouvez utiliser un pointeur pour contenir l'adresse de différentes variables à des moments différents.
Mais vous devez avoir le même type. Un pointeur int doit
pointer pour restaurer l'adresse d'un type int.
Les tableaux et les pointeurs semblent assez différents,
mais ils sont très étroitement liés et peuvent parfois être utilisés de manière interchangeable, en
particulier avec le tableau de caractères.
Vous pouvez en fait créer un caractère à retenir qui est
une chaîne et vous pouvez créer un pointeur de caractère qui sont essentiellement la même chose.
Il n'y a que de légères différences que
vous allouiez ou non de la mémoire et que vous la libériez avec un pointeur de caractère.
Avec un tableau de caractères, vous n'êtes pas obligé
de le faire, mais un caractère a est également de taille fixe.
Donc, si vous créez une chaîne de tableau de
caractères avec 20 comme taille, vous ne pouvez stocker que 19 caractères.
Avec le pointeur de caractère, vous pouvez utiliser la gestion
dynamique de la mémoire et vous pouvez augmenter ou diminuer la taille, cela
peut être plus efficace concernant la mémoire.
Mais l'une des utilisations les plus courantes des pointeurs en c est comme pointeurs vers des tableaux.
C'est à ce moment que vous utilisez
le plus souvent des pointeurs, en particulier vers des caractères.
Le pointeur de caractère est identique à un tableau de caractères.
Les principales raisons de l'utilisation de pointeurs pour
effacer sont des raisons de commodité de notation et d'efficacité du programme.
Vous pouvez donc utiliser un tableau ou un pointeur dans de nombreux cas, sauf
lorsque vous parlez de gestion dynamique de la mémoire.
Mais dans la plupart des cas, vous pouvez. Et vraiment la seule différence est sa
syntaxe, c'est la notation.
Il s'agit de savoir si vous utilisez ou non un indice pour accéder à
un élément ou si vous utilisez ou non
l'arithmétique des points, que vous utilisiez ou non le pointeur de caractère pour pointer vers l'adresse spécifique de cet élément.
Il est également plus efficace d'utiliser des pointeurs de caractères.
Les pointeurs vers des tableaux aboutissent généralement à un code qui utilise moins de mémoire et s'exécute plus rapidement.
Vous souhaitez donc utiliser autant que possible un pointeur pour les
caractères et un pointeur vers d'autres types de données.
Parce qu'il est plus rapide et utilise moins de mémoire. Pointeurs sur les tableaux pour la plupart.
Si vous avez un tableau de 100 entiers, nous savons
ce que cela signifie, vous dites simplement que la valeur int est 100. 100 est la taille.
Cela signifie que vous pouvez stocker 100 entiers dans ce tableau.
Vous pouvez également définir un pointeur. Nous allons le nommer pointeur de valeurs car
il pointe vers le tableau
de valeurs et il peut être utilisé pour accéder aux entiers contenus dans ce tableau.
Nous disons donc simplement un pointeur de valeurs instar. Nous savons comment déclarer un pointeur à ce stade.
Lorsque vous définissez un pointeur utilisé pour pointer les éléments d'un
tableau, vous ne désignez pas le pointeur comme pointeur de type vers un tableau.
Jusque-là, tout ce dont nous avons entendu parler, c'est du pointeur vers la fin,
du pointeur vers le double.
Mais lorsque vous utilisez des tableaux, vous ne dites pas tableau pointé.
Ce pointeur réel pointe vers un élément spécifique contenu dans le tableau.
Donc, retiens-le bien. Ce n'est pas en fait un tableau
entier lorsque vous effacez un pointeur avec l'adresse des valeurs.
Donc, pour que le pointeur de valeurs pointe vers le premier élément du tableau de valeurs, tout ce que vous avez à
faire est de dire que les valeurs pointent ou sont égales à des valeurs.
Vous n'avez pas à y mettre l'adresse ou quoi que ce soit. Parce que le
tableau de valeurs est un pointeur.
C'est ce que vous devez conduire dans votre tête, c'est que
tous ces tableaux sont des pointeurs sous le capot.
Donc, si vous souhaitez affecter le premier élément d'un
tableau à un pointeur, tout ce que vous avez à faire est de spécifier le tableau sur le
côté droit de l'opérateur égal et sur
le côté gauche, vous n'avez que le pointeur de valeurs.
Cela va pointer vers la première adresse du tableau ou le premier élément.
L'opérateur d'adresse n'est pas utilisé, notez que.
Le compilateur c traite l'apparence d'un nom de tableau
sans indice comme un pointeur vers le tableau.
Ainsi, la spécification de valeurs sans indice a pour
effet de produire un pointeur vers le premier élément de valeurs.
Et donc ce que cela signifie, c'est que vous pouvez maintenant pointer vers
les valeurs suivantes dans le tableau en incrémentant simplement le pointeur, pour aller à l'adresse suivante.
Et c'est ce dont nous allons parler dans les prochaines conférences lorsque nous parlerons d'arithmétique des points.
Et ce n'est vraiment qu'une question de notation et c'est aussi une question d'efficacité.
Une manière équivalente de produire un pointeur vers le début des valeurs est
donc d'appliquer également l'adresse de l'opérateur au premier élément de droite.
Donc, vous pouvez le faire de deux manières, dans les deux cas, c'est bien.
Mais vous pouvez aussi le faire. Vous pouvez dire que l'adresse du pointeur de valeurs est inférieure à zéro.
Cela définira le pointeur de valeurs sur le premier élément du tableau.
Vous pouvez donc utiliser celui-ci ou simplement dire que le point est égal à la valeur.
Evidemment, sans l'esperluette et sans l'indice, c'est
un peu moins de code ou plus facile à écrire.
Cela peut être un peu plus clair car
vous ne savez pas nécessairement que values est un tableau à moins que vous ne regardiez la déclaration.
Mais encore une fois, dans les deux cas, c'est bien. Le pointeur de valeurs est égal à des valeurs ou
le pointeur de valeurs est égal à l'adresse de la valeur inférieure à zéro.
C'est une question de préférence du programmeur. Et encore une fois, c'est une chose de notation.
Donc, juste
pour répéter, lorsque vous avez deux expressions ar
sous-i et astérisque ar plus i, elles
ont une signification équivalente.
Nous voulons donc simplement nous assurer que vous comprenez cela.
Les deux fonctionnent si ar est le nom d'un tableau.
Vous pouvez utiliser le pointeur et vous pouvez le dé-référencer.
Et les deux fonctionnent s'il s'agit d'une variable de pointeur.
Utilisez une expression telle que ar plus plus ne fonctionne que si ar est une variable de pointeur.
Vous ne pouvez donc pas incrémenter un tableau en disant
plus plus et vous attendre à ce qu'il passe à l'élément suivant.
Vous ne pouvez le faire que sur des pointeurs ou des pointeurs de tableau.
Donc, si nous avons ar qui est un pointeur pointant vers un tableau et que nous voulons
aller à l'élément suivant, nous pouvons simplement l'incrémenter à chaque fois.
Mais si vous dites ar sous-i parce que ar sub i est un tableau
et un tableau est un pointeur, vous pouvez le déréférencer en disant ar qui est
ar est un pointeur que
nous avons attribué ar plus i, c'est la même chose.
Donc, dans les prochaines conférences, nous allons parler de l'arithmétique des points
et cela est fortement lié à la relation entre les tableaux et les pointeurs.
Les pointeurs peuvent être des tableaux. Ce n'est pas un tableau de pointeurs, c'est un élément.
Vous pouvez donc utiliser l'adresse d'un pointeur pour
naviguer dans un tableau, parcourir
un tableau. Merci.