Débutants en pointeurs en langage C

Table des matières

1. Qu'est-ce qu'un pointeur

2. Pointeurs et types de pointeurs

3. Pointeur sauvage

4. Arithmétique du pointeur



        1 : Qu’est-ce qu’un pointeur

        En fait, l'essence du pointeur est l'adresse. Afin de mieux utiliser l'espace mémoire, nous allons diviser la mémoire en cellules une par une, et l'unité de ces cellules est l'octet, et l'espace de chaque octet Tous correspondent à une adresse, ces adresses nous permettent de mieux retrouver la mémoire grâce à l'adresse, puis d'utiliser la mémoire. Par exemple, utilisons des exemples spécifiques pour illustrer :

Sous la machine 32 bits, nous savons qu'il y a 32 lignes de niveau haut et bas, 1/0 (niveau haut, niveau bas), ces 32 lignes d'adresse peuvent générer jusqu'à 2^32 adresses, et leur taille est de 2^. la taille de 32 octets est égale à 4 Go, donc sous la machine 32 bits, notre pointeur ne peut gérer que 4 Go de mémoire, sous la machine 64 bits, le pointeur peut gérer 8 Go de mémoire, donc la taille du pointeur est de 4 octets, et 8 taille en octets.

2 pointeurs et types de pointeurs :

1 : variable de pointeur

        Comme son nom l'indique, la variable pointeur est utilisée pour stocker des pointeurs. C'est une adresse. On peut utiliser l'adresse d'un numéro pour trouver le contenu de l'adresse. Expliquons-le à travers des codes spécifiques :>      

2 : Type de pointeur : expliquons-le à travers l'image

Je crois que beaucoup d'amis ont de tels doutes. Puisque la taille du pointeur est de 4 octets sous une machine 32 bits et que l'adresse en mémoire peut être gérée, pourquoi avons-nous besoin de distinguer les types ?

Si nous nous posons cette question, nous devons continuer la lecture. Avant cela, nous devons parler du concept de pointeurs sauvages.

3 : pointeur sauvage

        Sur le Web : les pointeurs sauvages sont des endroits vers lesquels le pointeur pointe n'est pas connu (aléatoire, incorrect, sans limites explicites)

        Comme son nom l'indique, le pointeur sauvage signifie que l'endroit pointé par le pointeur est illégal, ne peut pas être utilisé et est exploité sans autorisation.

        Introduisons ci-dessous plusieurs situations, qui appartiennent à la portée des pointeurs sauvages

                1 : Le pointeur n’est pas initialisé

                La désinitialisation entraînera une attribution aléatoire de pointeurs, ce qui amènera également les pointeurs à pointer aléatoirement vers la mémoire en mémoire, et lorsque nous utilisons des pointeurs, un accès illégal se produira, utilisant aléatoirement l'espace dans notre mémoire :    

 

2 : Accès hors limites du pointeur :

        Ceci est sujet aux bugs, surtout lorsque nous utilisons des tableaux, illustrons avec un exemple :

 

3 : L'espace pointé par le pointeur est libéré :

 Alors, comment éviter les pointeurs sauvages ?

1. Initialisation du pointeur

2. Méfiez-vous des pointeurs hors limites

3. Le pointeur pointe vers l'espace à libérer et définit NULL dans le temps

4. Évitez de renvoyer l'adresse d'une variable locale

5. Vérifiez la validité du pointeur avant de l'utiliser

Lors de la définition d'un pointeur, nous devons réfléchir à l'endroit où le pointeur pointe, puis faire attention lorsque nous franchissons la limite.

4 : Opérations sur le pointeur

        1 pointeur + (-) opération entière

        Cela signifie que le pointeur recule vers l'adresse d'un type de données. Par exemple, si nous sommes un pointeur de int*, alors nous déplaçons un espace de la taille d'une variable entière vers l'arrière, et lorsque nous ouvrons, nous ouvrons quatre octets pour un espace, puis sautez simplement un espace entier pour pointer vers le numéro suivant, et nous utilisons des pointeurs de type char*, nous ne pouvons accéder qu'à 1 octet d'espace

 

2 pointeur-pointeur (lorsque deux pointeurs sont utilisés pour des opérations, nous ne pouvons effectuer que des opérations de soustraction)

et représentent les éléments contenus entre les deux adresses

Et la condition préalable au pointeur-pointeur est que les deux pointeurs pointent vers le même espace, car on ne sait pas combien d'éléments sont différents entre les deux, donc le résultat du calcul ne peut pas être calculé.

        Cet article est par ici, merci pour votre patience.

 

        

Je suppose que tu aimes

Origine blog.csdn.net/2201_75964502/article/details/130713283
conseillé
Classement