int *q = new int[3];
q表示指针指向的地址,&q表示指针本身的地址。
int main()
{
int ret = 0;
int *a = new int[3];
int *c = new int[4];
int *b = a;
printf("%6x %6x %6x %6x\n", &a, a, &b, b);
delete a;
delete c;
printf("%6x %6x %6x %6x\n", &a, a, &c, c);
a = NULL;
c = NULL;
printf("%6x %6x %6x %6x\n", &a, a, &c, c);
printf("%6x %6x\n", &b, b);
}
其中红色代表指针本身的地址,绿色代表指针指向的地址,int *b = a,即a和b指向同一块内存,当delete a后,a会指向8123一固定地址,只有赋NULL后才指向0地址,a指针释放后,b指针还在,程序结束后由系统自动销毁。