>750
751のmain閉じはコピぺみすだとしてコンパイルは通るけどメモリエラーで
落ちるということだよね。
とりあえず文字列の配列の宣言部は
char *(aa[3]); ではなくて char *aa[3]; じゃないかな?

前者は (aa is array(element3)) is pointer to char
後者は aa is array(element3) of pointer to char
aaはcharへのポインタの配列(要素数3)という感じで読むんだけど。
前者は私には自然に読めないな。