La différence entre les pointeurs et les variables de pointeur (langage C)

Astuce : Ce chapitre parle principalement de ma compréhension des pointeurs du langage C et des variables de pointeur


avant-propos

Le pointeur est un concept très important en langage C. La maîtrise de l'application du pointeur peut rendre le programme plus concis, compact et efficace. On peut dire que ne pas maîtriser les pointeurs signifie ne pas maîtriser l'essence du langage C.


提示:以下是本篇文章正文内容,下面案例可供参考

1. Qu'est-ce qu'un pointeur ?

En apprenant le langage C, nous savons que lorsqu'une variable est définie, le système allouera automatiquement de l'espace mémoire pour la variable. Le système de compilation alloue une certaine longueur d'espace en fonction du type de variable défini dans le programme.
Réfléchissez à une telle question :
comment puis-je savoir où se trouve l'espace mémoire alloué par le système aux variables ?

Imaginez d'abord un scénario réel :
lorsque vous allez vous baigner dans une piscine, vous avez généralement besoin d'un tiroir pour ranger vos affaires personnelles, ensuite vous obtiendrez une clé avec le numéro du tiroir auprès du serveur, puis selon la clé Trouvez le tiroir correspondant sur l'armoire, et enfin vous pouvez ranger les articles dans le tiroir pour les garder en lieu sûr.

Grâce à l'exemple ci-dessus, il n'est pas difficile de constater que
lorsque nous recherchons quelque chose, nous pouvons le trouver facilement tant que nous connaissons son emplacement exact. Dans le langage C, chaque unité de mémoire (tiroir) dans la zone de mémoire (armoire) a une adresse (numéro), et C visualise l'adresse sous la forme d'un "pointeur". Cela signifie qu'à travers elle, l'unité de mémoire avec son adresse peut être trouvée). La variable (clé) contient la valeur d'adresse où les données sont stockées et est utilisée pour accéder aux données dans l'unité de mémoire déterminée par l'adresse.

C语言中,指针就是变量的地址。

// 定义一个整型变量a,赋值为3
int a = 3;
// &运算符获取变量a的地址
printf("%o",&a); 

insérez la description de l'image ici

2. Qu'est-ce qu'une variable pointeur ?

一个变量的值是另一个变量的地址,且变量类型相同,则称该变量为指针变量。

// 定义一个整型变量a,赋值为3
int a = 3;
// 定义一个指针变量p,并初始化为NULL值
int* p = NULL;
// 将a的地址赋值给p
p = &a;

insérez la description de l'image ici
Note:

  1. Lorsque la variable de pointeur est définie, un espace mémoire lui sera également alloué ;
  2. *Le signe indique que la variable définie est une variable pointeur ;
  3. Changer la valeur d'une variable de pointeur revient en fait à changer le pointeur ;
  4. Le type de la variable pointeur doit être cohérent avec le type de la variable pointée.

3. Développement des connaissances

La première adresse de l'espace de stockage occupé par la variable dans la mémoire est appelée l'adresse de la variable et la donnée stockée dans l'espace de stockage de la variable est la valeur de la variable.

野指针:
Lorsque l'espace mémoire de la pile pointé par le pointeur est libéré, le pointeur pointant dessus ne meurt pas. Une fois la mémoire libérée, la valeur du pointeur ne change pas réellement. Il pointe toujours vers ce morceau de mémoire, mais les données stocké dans la mémoire devient aléatoire Valeur (caractères brouillés) uniquement. Le résultat de la libération de la mémoire ne modifie que les données stockées dans la mémoire, rendant le contenu stocké dans la mémoire poubelle, et le pointeur vers la mémoire poubelle est appelé un pointeur sauvage.
Une fois la mémoire libérée, le pointeur vers celle-ci ne deviendra pas automatiquement un pointeur nul et un pointeur sauvage n'est pas un pointeur nul.


Résumer

Pour apprendre le langage c, vous devez d'abord comprendre la différence entre les pointeurs et les variables de pointeur, afin d'éviter les malentendus, ce qui sera plus propice à la compréhension et à l'application des opérations et des calculs de pointeur.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_48627356/article/details/123758920
conseillé
Classement