Détermination de la taille d'un tableau dans les paramètres de fonction C
En C, les tableaux sont implicitement convertis en pointeurs lorsqu'ils sont transmis en tant que paramètres de fonction. Cela signifie que les informations de taille sont perdues et qu'un accès direct à la taille du tableau dans la fonction n'est pas possible.
Dans votre extrait de code :
void makeVectorData(float p_vertData[]) { int num = (sizeof(p_vertData)/sizeof(int)); }
sizeof(p_vertData) récupère la taille du pointeur vers le tableau, pas le tableau lui-même. Puisqu'un pointeur nécessite 32 bits (sur un système 32 bits), num sera égal à 1, quelle que soit la taille réelle du tableau.
Solution :
Pour accéder à la taille du tableau, vous pouvez passer un paramètre séparé indiquant la taille :
void makeVectorData(float p_vertData[], int size) { int num = size; }
Dans l'appelant, vous spécifierez alors le la taille du tableau comme argument :
makeVectorData(verts, sizeof(verts) / sizeof(float));
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!