Notions de base de pointeurs dans la programmation de c

Mémorisez cette phrase: Un pointeur est une variable qui contient un emplacement de mémoire. Vous devez accepter la folie du pointeur avant de passer. Certes, si vous pouvez obtenir à l'emplacement de mémoire d'une variable, ou adresse, en utilisant le opérateur, le pointeur est une bête bien plus puissant.

Un pointeur est un type de variable. Comme d'autres variables, il doit être déclaré dans le code. En outre, il doit être initialisé avant qu'il ne soit utilisé. Cette dernière partie est vraiment important, mais d'abord la déclaration a ce format:

Type * Nom

Comme lorsque vous déclarez une variable, la type identifie le pointeur comme un char, int, float, et ainsi de suite. La nom est le nom de la variable de pointeur, qui doit être unique, comme tout autre nom de la variable. L'astérisque identifie la variable comme un pointeur, non pas comme une variable régulière.

La ligne suivante déclare un pointeur de char, acolyte:

char * sidekick-

Et cette ligne crée une double pointeur:

double arc en ciel-

Pour initialiser un pointeur, vous devez définir sa valeur, tout comme toute autre variable. La grande différence est que le pointeur est initialisé à l'emplacement de mémoire. Cet endroit est pas un endroit aléatoire dans la mémoire, mais plutôt l'adresse d'une autre variable dans le programme. Par example:

acolyte = conduire-



La déclaration précédente initialise le acolyte variable à l'adresse de la conduire variable. Ces deux variables sont types- omble sinon, le compilateur grogner comme un chat mouillé. Après cette déclaration est exécutée, la acolyte pointeur contient l'adresse du conduire variable.

Si vous lisez ce texte et juste hocher la tête sans rien comprendre, bon! Cela signifie qu'il est temps pour un exemple.

Le code source dans un exemple comprend les commentaires pour aider à décrire deux lignes cruciales. Le programme n'a pas vraiment faire autre chose que de prouver que le pointeur acolyte contient l'adresse, ou l'emplacement de la mémoire, de la variable conduire.

UN EXEMPLE

main () {char plomb-char int #include * acolyte-plomb = 'A'- / * initialiser l'omble variables * / acolyte = plomb / * initialiser pointeur IMPORTANT! * / printf ("A propos de la variable 'lead':n")-printf("Sizett%ldn",sizeof(lead))-printf("Contentst%cn",lead)-printf("Locationt%pn",lead)-printf("And variable «acolyte»: n ") - printf (" matières t% p n ", acolyte) -retour (0) -}

Autres choses à noter: Ligne 12 utilise deux séquences onglet d'échappement pour aligner la sortie. Aussi, ne pas oublier le à la ligne 14, qui récupère l'adresse de la variable.

Exercice 1: Tapez le code source d'un exemple dans votre éditeur. Construire et exécuter.

Voici le résultat:

À propos de 'plomb' Variable: Taille 1Contents ALocation 0x7fff5fbff8ffAnd variable «acolyte»: matières 0x7fff5fbff8ff

Les adresses (dans l'exemple) sont uniques pour chaque système, mais l'essentiel à noter est que le contenu du pointeur acolyte sont égaux à l'emplacement mémoire de la variable conduire. Voilà en raison de l'attribution, ou de l'initialisation, qui a lieu sur la ligne 9 dans le code.

Il serait vain pour un pointeur vers contient simplement une adresse de mémoire. Le pointeur peut aussi jeter un regard dans cette adresse et déterminer la valeur qui est stocké là. Pour que cela se produise, l'opérateur * est préfixé nom de variable du pointeur.

Exercice 2: Modifier votre code source de l'exercice 1 en ajoutant la déclaration suivante après la ligne 16:

printf ("valeur Peek t% c n", * acolyte) -

Construire et exécuter. Voici le résultat:

À propos de 'plomb' Variable: Taille 1Contents ALocation 0x7fff5fbff8ffAnd variable «acolyte»: matières 0x7fff5fbff8ffPeek valeur A

Lorsque vous spécifiez l'astérisque (*) avant le nom d'une variable pointeur initialisé, les résultats sont le contenu de l'adresse. La valeur est interprétée en fonction du type de pointeur. Dans cet exemple, * acolyte représente la valeur de carbonisation stocké à un emplacement de mémoire maintenue dans la acolyte variable, ce qui est bien le même que la variable d'emplacement de mémoire conduire.

Pour le dire autrement:

  • Une variable de pointeur contient un emplacement de mémoire.

  • La * pointeur pics variable dans la valeur stockée à cet emplacement de mémoire.


» » » » Notions de base de pointeurs dans la programmation de c