#include <iostream>
#include <typeinfo>

int main()
{
    std::cout << typeid(int *).name() << std::endl;
    std::cout << typeid(int[]).name() << std::endl;
    std::cout << typeid(int[0]).name() << std::endl;
    std::cout << typeid(int[1]).name() << std::endl;
    std::cout << typeid(int[5]).name() << std::endl;

    std::cout << std::endl;

    struct S
    {
        int *a;
        int b[];
        int c[0];
        int d[1];
        int e[5];
    } s;

    std::cout << typeid(s.a).name() << std::endl;
    std::cout << typeid(s.b).name() << std::endl;
    std::cout << typeid(s.c).name() << std::endl;
    std::cout << typeid(s.d).name() << std::endl;
    std::cout << typeid(s.e).name() << std::endl;
}
