①int型の宣言について

int count[1 << CHAR_BIT] = { 0 };

というものがあったのですが、よく分かりません。
調べてみるとCHAR_BITは8以上と書かれていましたが、このint型の宣言の意味は分かりませんでした。

②for文について

char *p = "ABCDEFG";
for ( ; *p ; p++) { ~}

普通のfor文ではfor(int i = 0; i < 10; i++)となりますが、この場合はどういうことなのでしょうか。*pの長さの分(7文字あるので7回。そのため初期値が必要ない)ということでいいのでしょうか。

よろしくお願いします。