俺が感じるのは
int a;はaのアドレスの位置を直接番号で示していると思うんだ
int a[10];と書くとアドレスの先頭のアドレスの番号を示していると思うんだ
a=a+1と書くとaは変数ではなく番号だからエラーになるんだと思うよ