超初心者による解説なので間違ってたらゴメリンコ

int a[] = {1,2,3,4,5,6,7}, i;
// 配列aの最初の位置をポインタpに保存
int* p = a;
// 配列aの最後の要素の位置をポインタqに保存
// 最初の位置+配列の要素の個数−1
int* q = a + sizeof(a) / sizeof(a[0]) - 1;

// ポインタpとqがぶつかるまで繰り返す
while (p != q) {
// ポインタpが指す値をtに一時保存しておく
int t = *p;
// ポインタqが指す値をpが指す配列要素に代入、pを1進める
*p++ = *q;
// tの値をポインタqが指す要素に代入し、qを1戻す
*q-- = t;
}

for (i = 0; i < 7; i++){
printf("%d", a[i]);
}