Salut !
Je ne comprends pas pourquoi dans ce code, la fonction allouer ne fonctionne pas :
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
24
25
26
27
#include<stdio.h>
#include<stdlib.h>
 
void allouer(int* ptr){
  ptr = malloc(10*sizeof(int));
}
 
void ptrEstIlNull(int* ptr){
  if(ptr==NULL)
    printf("tab est null\n");
  else
    printf("tab n'est pas null\n");
}
 
 
int main(){
  int* tab;
  ptrEstIlNull(tab);
 
  allouer(tab);
  ptrEstIlNull(tab);
 
  tab = malloc(10*sizeof(int));
  ptrEstIlNull(tab);
 
  return 0;
}
Le résultat obtenu à la console est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
tab est null
tab est null
tab n'est pas null
Mais j'aurais imaginé que le résultat serait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
tab est null
tab n'est pas null
tab n'est pas null
La solution, c'est de modifier la fonction allouer pour qu'elle renvoie le pointeur. Mais la solution je m'en moque, je veux juste comprendre.