there's no array type in c
Yes it does. It just decays to a pointer at the slightest touch.
There is a big difference between:
struct A { int size; char data[]; }
struct B { int size; char *data; }
Yes it does. It just decays to a pointer at the slightest touch.