• Aucun résultat trouvé

Pointeurs, Tableaux et fonctions Pointeurs

N/A
N/A
Protected

Academic year: 2022

Partager "Pointeurs, Tableaux et fonctions Pointeurs"

Copied!
2
0
0

Texte intégral

(1)

Pointeurs, Tableaux et fonctions

Pointeurs

int x;

x nom de la variable

x=lO;

Un pointeur range l’adresse d’une variable.

Int *p ;

p contient l’adresse d’une variable entière Ne pas confondre

int *p, q ;

avec

int *p, int *q ;

int *p, q ;

p = &q ;

Ranger l’adresse de q dans p

p=q

; Erreur

int *a , b , c;

b = 10;

a = &b;

c = *a;

Indirection (contenu du contenu de a) c contient donc 10

Pointeurs et tableaux

En c, il ya une grande correspondance entre tableaux et pointeurs.

int a[10] ;

c’est aussi la déclaration d’un pointeur vers le premier élément du tableau (

int *a ;

) Cependant

int a[10] ;

allocation statique

int * a ;

le tableau doit être alloué dynamiquement avant utilisation (

a= malloc( 10 * sizeof(int)

)

(Si a est un tableau, on ne peut changer le contenu de a. Un nom de tableau est considéré comme un pointeur constant)

a

c’est aussi

&a[0]

a[0]

c’est aussi

*a

a[i]

c’est aussi

*(a+i)

Valeur pointée par a + i .

*(a+ 1)

c’est aussi

a[1]

(2)

*(a+ i)

c’est aussi

a[i]

On peut incrémenter/décrémenter les adresses

a+1

c’est l’adresse du deuxième élément du tableau

a+i

c’est l’adresse du i-ème élément du tableau

a+i

c’est aussi

&a[i]

L’incrément/décrément dépend du type de l’élément pointé

Tableau comme paramètre

On passe l’adresse du tableau

Exemple : Remplir un tableau avec n nombre aléatoires.

int randdat(int *pa , int n)

// on peut aussi faire int pa[10] ou int pa[]

{ int i;

for ( i=0 ; i< n ; ++i) {

*pa = rand()%n + 1;

++pa;

} }

Une autre manière :

for(i=0 ; i<n ; ++i) *(pa+i)=rand()%n+1;

Ou encore :

for(i=0 ; i<n ; ++i) pa[i]=rand()%n+1;

Remarque : on peut déclarer une variable pointeur par

int pa[];

Simulation d’une procédure par une fonction

On passe les adresses au lieu des nom de variables Exemple :

function swap(int *a , int *b);

{

int temp; temp = *a; *a = *b; *b = temp;

}

L’appel se fait par

swap(&a,&b)

Références

Documents relatifs

Le tableau de variation d’une fonction f résume les variations de la fonction en partageant l’ensemble de définition de la fonction en intervalles sur lesquels la fonc- tion

- Si on n’a plus besoin d’un bloc de mémoire réservé dynamiquement par malloc, alors on peut le libérer à l’aide de la fonction

Passage de param` etre par void* : on fournit l’emplacement m´ emoire contenant le param` etre sans en pr´ eciser

Pour représenter une liste d'entiers sous forme chaînée, on crée le modèle de structure cellule qui a deux champs : un champ valeur de type int , et un champ suivant

On l’appelle le nilradical

Résultat graphique : La courbe représentative d’une fonction dérivable sur un intervalle I est faite d’un seul morceau et sans pic, ni pointe.. On veut étudier sa dérivabilité

[r]

Comme on parle de pointeurs sur fonctions, vous pourriez tout à fait vous dire que c'est très facile de l'affecter, il suffit de récupérer l'adresse mémoire d'une fonction et de