>char *(aa[3]); も char *aa[3]; も同じ意味じゃない?
勘違いだったみたいです。混乱させてごめん。
756もちょっと変だった。
超手抜きだけどこんな感じになるのでは

#include <stdio.h>
#include <string.h>

int main(void)
{
int i, j, k;
int length;
char c;
char *aa[3];
char temp[6]; /* ダサいバッファ*/

/* 文字列の初期化 */
aa[0]= "text1";
aa[1]= "text2";
aa[2]= "text3";

for (i = 0 ; i < 3 ; i++) {
length = strlen(aa[i]); /* 文字列の長さを取得 */

/*
* aa[i]のNUL文字を除く文字を後ろから一文字づつ
* tempバッファにコピー
*/
for (j = length - 1, k = 0; j >= 0; j--, k++)
temp[k] = aa[i][j];

temp[5] = '\0';

strcpy(aa[i], temp); /* tempをaa[i]にコピー */
}

for (i = 0 ; i < 3 ; i++)
printf("%s\n", aa[i]);

return 0;
}