int a [10];
int *p ;
a++; //错误,a是数组的首地址,a的指针设定为常量,不允许修改
//原因是,a如果被修改,在语句块结束后,系统无法找到地址来回收栈空间。
//类似的p=(char*)malloc(100); p++; free(p)也是错误的,因为p不是堆的初始地址
//正确的做法是引入中间变量:p1=p; p1++; free(p);
a = a + 1; //错误。理由同上
p = a ++; //错误,a++后a自己的指针地址也要改变
p = a + 1; //正确
int b = 10;
(& b)++; //错误,b的地址被修改,栈无法回收