provenant de cette question "What does (int (*)[])var1 stand for?" J'ai essayé d'accéder au résultat de la distribution comme un tableau multidimensionnel. Mais j'obtiens l'erreur suivante: "assignment from incompatible pointer type
" suivi d'une erreur de segmentation. J'ai aussi essayé d'autres variations, mais aucune d'entre elles n'a fonctionné. Comment puis-je accéder directement aux éléments de var1
dans la fonction example
?Puis-je accéder au type int (*) [] avec [] []?
Merci!
#include <stdlib.h>
int i(int n,int m,int var1[n][m]) {
var1[0][0]=5;
return var1[0][0];
}
int example() {
int *var1 = malloc(100);
// works
int var2;
var2 = i(10,10,(int (*)[])var1);
printf("var2=%i",var2);
//doesn't work I
int *var3;
var3=(int (*)[])var1; //"assignment from incompatible pointer type"
printf("var3[0][0]=%i",var3[0][0]);
//doesn't work II
int *var4;
var4=var1;
printf("var4[0][0]=%i",var4[0][0]); //" error: subscripted value is neither array nor pointer"
//doesn't work III
int **var5;
var5=var1;
printf("var5[0][0]=%i",var5[0][0]); // assignment from incompatible pointer type
return(1);
}
int main(){
int a;
a=example();
return(1);
}
Merci, lancer var3 de cette façon 'int (* var3) [10] = (int (*) [10]) var1;' est la solution pour moi! – Framester
Vous comprenez * pourquoi * cela fonctionne, non? –
Je pense que vous vouliez dire 'malloc (400)', pas 'malloc (100)', selon votre cible. Voir http://stackoverflow.com/questions/2973856/can-i-access-type-int-with/2976113#2976113 pour une manière propre de faire cela. –