Тип &c
равен cane (*)[20]
, то есть указатель на массив. Вы объявили аргумент функции cane *[20]
, который (в качестве аргумента функции) является cane**
, который является указателем на указатель.
Возможно, вы намеревались передать указатель на элемент массива:
void leggi(cane *c)
// ...
scanf("%d", &c[i].a );
//
leggi(c);
Или, возможно, вы действительно намеревались вместо этого передать указатель на массив:
void leggi(cane (*c)[20])
scanf("%d", &(*c)[i].a )
//
leggi(&c);