Les pointeurs constituent une notion fondamentale du C++. Elle est utilisée pour passer des paramètres à une fonction ou pour créer des structures de données complexes comme des tableaux de taille variable.
Utilité des pointeurs
Techniquement, il y a trois utilisations majeures des pointeurs en C : le passage de références à des fonctions ; la manipulation de données complexes ; l'allocation dynamique de mémoire.
Un pointeur est une adresse mémoire qui contient une autre adresse mémoire. Ce qui fait que pour accéder à une donnée pointée par un pointeur (en lecture ou écriture), il faut deux accès mémoire : le premier pour lire l'adresse elle-même, le second pour l'accès à la donnée qui y est stockée.
Pour initialiser un pointeur, on peut soit : lui donner la valeur 0 ou NULL, qui signifie "invalide, ne pas utiliser". lui donner l'adresse d'une variable, lui donner la valeur retourn�e par les fonctions malloc(), realloc(), calloc().
Un pointeur se déclare comme ceci : int *pointeur; (dans le cas d'un pointeur vers une variable de type int ). Par défaut, un pointeur affiche l'adresse qu'il contient. En revanche, si on écrit *pointeur , on obtient la valeur qui se trouve à l'adresse indiquée par le pointeur.
Les pointeurs sont semblables aux variables, à ceci près qu'au lieu de stocker un nombre, ils stockent l'adresse à laquelle se trouve une variable en mémoire. Si on place un symbole & devant un nom de variable, on obtient son adresse au lieu de sa valeur (ex. : &age ).
En C, chaque pointeur est limité à un type de données. Il peut contenir l'adresse d'une variable simple de ce type ou l'adresse d'une composante d'un tableau de ce type. Si un pointeur P contient l'adresse d'une variable A, on dit que 'P pointe sur A'.
Incrémentation d'un pointeur
Si p par exemple pointe vers un élément i d'un tableau, après p++, il pointe vers l'élément i+1. Lorqu'on écrit p[i], on rajoute en fait à p la valeur i fois la taille du type pointé et on déréférence ce pointeur.
printf("%d", (unsigned int)pointeurSurAge); La chaîne "%p" te permettra d'afficher l'adresse contenue dans le pointeur, avec une notation hexadécimale. Tu peux aussi utiliser "%u" ou "%x" et caster le pointeur en unsigned int quand tu le passes en paramètre (ce qui est moins élégant).
La fonction malloc() vous permet d'allouer un objet de la taille fournie en argument (qui représente un nombre de multiplets) et retourne l'adresse de cet objet sous la forme d'un pointeur générique. En cas d'échec de l'allocation, elle retourne un pointeur nul.
Une référence, comme un pointeur, stocke l'adresse d'un objet situé ailleurs dans la mémoire. Contrairement à un pointeur, une référence après son initialisation ne peut pas être définie pour faire référence à un autre objet ni prendre la valeur null.
Pointeurs (C++)
Les pointeurs sont largement utilisés dans C et C++ à trois fins principales : pour allouer de nouveaux objets sur le tas, pour passer des fonctions à d'autres fonctions.
Une façon d'introduire une variable chaîne de caractères est la déclaration suivante : char chaine[10] ; On dispose alors d'une variable de nom ”chaine' dans laquelle on pourra stocker au plus 9 caractères (En effet, il ne faut surtout pas oublier le ”\0' marquant la fin de la chaîne !).
En C, il est nécessaire d'inclure l'en-tête standard <stdio. h> au début du code source du programme, car c'est lui qui permet de déclarer la fonction printf. Voici son prototype : int printf(const char* format, ...);
void (C++)
Lorsqu'elle est utilisée comme type de retour de fonction, la void mot clé spécifie que la fonction ne retourne pas de valeur. Lorsqu'elle est utilisée pour la liste des paramètres d'une fonction, void spécifie que la fonction ne prend aucun paramètre.
En informatique, augmentation de la valeur d'une variable, du contenu d'un registre ou d'une mémoire, d'une quantité constante à chaque exécution d'une instruction, généralement répétitive, d'un programme.
Un opérateur de type x++ permet de remplacer des notations lourdes telles que x=x+1 ou bien x+=1.
Il désigne un homme qui cherche à approcher des jeunes filles mineures (autour de 15 - 17 ans) avec de mauvaises intentions, qu'il passe à l'action ou non. Le mot pointeur circule en particulier sur les réseaux sociaux, dans des accusations à l'encontre d'influenceurs, de créateurs de contenus, de personnalités du web.
Le symbole * permet lorsqu'il est placé devant un nom de pointeur, d'utiliser la variable pointée. Cette opérateur peut donc permettre soit de récupérer la valeur contenue dans la variable pointée, soit de modifier le contenu de cette variable pointée.
En langage C, une chaîne de caractères est un tableau, comportant plusieurs données de type char, dont le dernier élément est le caractère nul '\0', c'est-à-dire le premier caractère du code ASCII (dont la valeur est 0).
Le type char est utilisé pour stocker une et une seule lettre. Il stocke en réalité un nombre, mais ce nombre est automatiquement traduit par l'ordinateur à l'affichage. Pour créer un mot ou une phrase, on doit construire une chaîne de caractères. Pour cela, on utilise un tableau de char .
Scanf( ) ne peut pas afficher quelque chose, c'est le rôle de printf. La primitive scanf lit les caractères sur l'E/S standard (le clavier), puis les interprète et les convertit selon les formats spécifiés, et enfin stocke les valeurs dans les emplacements mémoires donnés par les arguments.
Définition. Il existe deux modes de transmission des paramètres: Par valeur: le paramètre transmis n'est jamais affecté par les modifications dans la procédure ou la fonction (on ne récupère pas les résultats !) Par adresse (référence) : le paramètre transmis dans ce cas peut être modifié et on récupère les résultats.
Java, comme nous l'avons dit, n'utilise pas de pointeurs, s'appuyant plutôt sur ses systèmes de gestion de données et sa mémoire interne, comme moyen de protéger les données de tout accès non autorisé. Cela rend pratiquement impossible pour les pirates d'infiltrer la mémoire de l'application Java.