Pointeurs
Notions et points abordés :
Déclaration d'un pointeur
Syntaxe |
Exemple |
// Déclaration
|
// Déclaration d'un pointeur sur une valeur
entière int *p; |
Affectation d'un pointeur (de l'adresse
d'une variable)
Syntaxe |
Exemple |
|
// Affectation à p de l'adresse d'une variable
entière i int i; p = &i; // &i est l'adresse de la valeur de i // Affectation
à p de la valeur NULL (ce qui signifie que le pointeur ne pointe
actuellement sur aucune valeur) p = NULL; |
Accès à la valeur pointée
Syntaxe |
Exemple |
*nom = value; |
// La valeur pointée par p est 2 *p = 2; |
variable = *nom; |
int j; j = *p; |
|
// Affichage de la valeur pointée par p printf( "%d", *p ); |
scanf( "%d", nom ); |
// Lecture de la valeur pointée par p scanf( "%d", p ); |
Pour utiliser correctement un pointeur, il est recommandé
1) de l'affecter à NULL au moment sa déclaration pour
indiquer qu'initialement il ne pointe sur rien.
2) de tester s'il n'est pas égal à NULL avant chaque
accès à la valeur pointéee.
int i;
|
#include <stdio.h> |
#include <stdio.h> int main()
return 0; |
int t[]
a la même signification
que int *t
.malloc
.
On utilise la fonction free
pour libérer une zone
mémoire précédemment allouée)
#include <stdio.h> int main()
// t[i] a la même signification que *(t+i) t[0] = 2; printf( "t[0]
= %d *t = %d\n",t[0],*t); free(t); return 0; |
void swap( int
*x, int *y )
Division euclidienne
une
fonction ne pouvant renvoyer qu'un seul résultat, cette fonction
va recevoir 2 pointeurs
qu'elle
va utiliser pour remplir les zones mémoire pointées avec
les résultats voulus.
void division( int
a, int b, int *reste, int *quotient )
Minimum et maximum
Écrire une
fonction qui calcule le minimum et le maximum de 2 entiers.
Premiers
carrés
tableau
de
n
entiers, le remplit avec les
n
premiers carrés et renvoie un
pointeur
vers
cette nouvelle zone mémoire :
int *cree_tab_carre(int n)
d'une
zone mémoire (un tableau de
n
entiers) vers une autre et renvoie
un pointeur vers cette nouvelle zone
mémoire :
int *cree_copie(int *t,
int n)
Concaténation
Écrire une
fonction qui crée et
renvoie un tableau contenant les entiers de deux zones mémoire
(des tableaux
d'entiers) passées en paramètre.
int *concatenation(int *t1, int
n1, int *t2, int n2)