#include <stdio.h>
struct S
{
int arr[3][4][5];
};
void func1(int(*arr)[3][4][5])
{
printf("size in bytes==%zu\n", sizeof *arr);
printf("dim0==%zu\n", sizeof *arr / sizeof **arr);
printf("dim1==%zu\n", sizeof **arr / sizeof ***arr);
printf("dim2==%zu\n", sizeof ***arr / sizeof ****arr);
}
void func2(struct S* s)
{
printf("size in bytes==%zu\n", sizeof s->arr);
printf("dim0==%zu\n", sizeof s->arr / sizeof *s->arr);
printf("dim1==%zu\n", sizeof *s->arr / sizeof **s->arr);
printf("dim2==%zu\n", sizeof **s->arr / sizeof ***s->arr);
}
int main(void)
{
int arr[3][4][5]={0};
func1(&arr);
struct S s={0};
func2(&s);
}