int *pi = new int[12];中的pi纯粹是个指针变量,它就是一个指针,在32位环境下占4个字节;而int ia[]={0, 1, 2};中的ia是个数组,虽然它的值是第一个元素的地址,但是它代表了整个这一个数组,数组中有三个元素,每个int类型的元素占4 个字节,共是12个字节,pi申请完内存后,是整个内存块的首地址,*pi代表的就是第一个元素,每个元素为int类型的,当然为4了,如果为char *pi = new char[12]; cout<<"*pi:"<<sizeof(*pi)//结果应该是1