二级指针的问题帮忙解决一下

char tio = "456700890";
int hao[]= { 1,2,3,4,5 };
int *h = hao;
int
* f = &h;
printf("%d\n", h);
printf("%c",tio)
puts(tio);
我想知道输出的h和tio的值是怎么得出的 还有puts(tio)而tio是一个指针输出一个tio怎么就等于456700890

 int main()
{
    char tio[] = "456700890";
    int hao[] = { 1,2,3,4,5 };
    int *h = hao;
    int* f = h;
    printf("%d\n", *h);//1,如果输出h则是hao数组的首地址
    puts(tio);//456700890,puts将字符数组tio以字符串输出
    return 0;
}