J'ai un struct:Passer un tableau de struct fonction change taille du tableau
struct Thing {
int id;
}
Ensuite, je crée un tableau de Thing
s:
struct Thing *a;
a = (struct Thing *) malloc(sizeof(struct Thing));
a->id = 1;
struct Thing *b;
b = (struct Thing *) malloc(sizeof(struct Thing));
b->id = 2;
struct Thing *array[] = {a,b};
Je vérifie la taille du tableau et est 2. Je vérifie la taille du tableau par:
printf("%d",sizeof(array)/sizeof(array[0]));
J'ai aussi une fonction qui prend s dans un tableau de choses:
void function(struct Thing *array[]) {
//do stuff
}
Ensuite, je passe dans le tableau de fonctionner:
function(array);
A l'intérieur de la fonction, la taille du tableau est 1. point Quelqu'un peut-il me où a Je me trompe et pourquoi est la taille du tableau 1 à l'intérieur de la fonction?
s'il vous plaît lire la FAQ C http://www.c-faq.com/aryptr/index.html –
ou de [ce qui est ensemble en décomposition?] (Http://stackoverflow.com/q/1461432) –
@ KarthikT J'ai trouvé ma solution de ZhangYuan à un commentaire ci-dessous. – drum