J'apprends C, actuellement des pointeurs.pointeur vers le pointeur?
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int f1(int **w){
for (int i=0;i<2;i++){
for (int j=0;j<10;j++){
w[i][j]=10;
printf("%d ",w[i][j]);
}
printf("\n");
}
printf("----\n");
}
int main() {
int **w = (int **) malloc(sizeof(int*)*2);
for (int i=0;i<2;i++)
w[i] = (int*)malloc(sizeof(int)*10);
for (int i=0;i<2;i++){
for (int j=0;j<10;j++){
w[i][j]=i*10 + j;
printf("%d ",w[i][j]);
}
printf("\n");
}
printf("---\n");
f1(w);
for (int i=0;i<2;i++){
for (int j=0;j<10;j++){
w[i][j]=i*10 + j;
printf("%d ",w[i][j]);
}
printf("\n");
}
return 0;
}
Alors, j'ai ce code
et voici la sortie:
0 1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19
---
10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10
----
0 1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19
Je me demande, pourquoi les valeurs du tableau (voir 2 dernières lignes) sont différentes à 10? .
Ma conjecture, ne pas envoyer le pointeur correct, mais, dans ce cas, où est stocké le tableau avec 10 ... 10 ?, est-il créé magiquement ??
grâce
réattribuer explicitement ces valeurs avec 'w [i] [j] = i * 10 + j;' avant impression eux ... ce qui n'est pas clair? –