char array[] = "Hi";
Это массив, состоящий из 3 charов, то есть его размер = 3 * 1 = 3 char* Array = "Hi";
Здесь Array - это указатель на строку. Его размер всегда одинаковый, будь это "Hi" или "Helllllllllllllo"
Whomai, Размер зависит от архитектуры. Может быть 32 бита или 64 бита (4/8 байт). Знаете же, что когда-то процессоры были 32-битные, а сейчас 64-битные? Вот это и есть в том числе длина указателя. Что конкретно у вас будет в программе зависит от операционной системы, процессора и настройки компиляции.