bonjour,

J'ai un petit soucis pour passer un tableau de pointeur dans une procedure, voici un exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//Main.c
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "fonction.h"
 
 
main () {
 
int* a;
 
printf("adresse pointeur : %x\n",&a);
printf("adresse pointee: %x\n",a);
 
essai(a);
 
printf("adresse pointeur : %x\n",&a);
printf("adresse pointee: %x\n",a);
printf("resultat : %d\n",a[0]);
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
//fonction.h
 
void essai(int* a){
 
 
a = (int*) malloc(sizeof(int)*2);
 
 
a[0] = 10;
 
 
 
printf("adresse pointeur a dans procedure : %x\n",&a);
printf("adresse pointee a dans procedure: %x\n",a);
 
 
}
Résultat :

adresse pointeur : bffffc8c
adresse pointee: 1d14
adresse pointeur a dans procedure : bffffc70
adresse pointee a dans procedure: 300130
adresse pointeur : bffffc8c
adresse pointee: 1d14
resultat : -1995946613

Je n'arrive pas a comprendre pourquoi l'adresse de a dans la procedure a changé et pourquoi le résultat n'est pas 10...

Les pointeurs c'est vraiment pas mon truc...

Merci par avance