Bonjour,
J'ai fait une fonction récursive, pour travailler sur un tableau. Un warning de type m'a fait mettre un cast avec (int(*)[]). Voici un code minimaliste :
Si j'enlève le cast avec (int(*)[]), j'obtient le warning suivant:
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 #include <stdio.h> void recursive(int (*ptab)[], unsigned int length) { if(length>=3) recursive( (int(*)[]) ((*ptab)+1), length-1 ); } // Main int main(void) { int tableau[]={0,1,2,3}; // tableau de int int (*pTabInt)[] = &tableau; // pointeur sur "tableau de int" recursive( pTabInt, 4); return 0; }
int (*)[] n'est pas plutôt équivalent à un **int qu'à *int ? Si oui, j'ai du mal à comprendre comment ma fonction peut marcher.Ligne 6 = warning: passing argument 1 of 'recursive' from incompatible pointer type|
Ligne 3 = note: expected 'int (*)[]' but argument is of type 'int *'|
Si quelqu'un a une explication, je suis preneur![]()
Partager