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 :

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;
}
Si j'enlève le cast avec (int(*)[]), j'obtient le warning suivant:
Ligne 6 = warning: passing argument 1 of 'recursive' from incompatible pointer type|
Ligne 3 = note: expected 'int (*)[]' but argument is of type 'int *'|
int (*)[] n'est pas plutôt équivalent à un **int qu'à *int ? Si oui, j'ai du mal à comprendre comment ma fonction peut marcher.

Si quelqu'un a une explication, je suis preneur