你的程序肯定不对,能运行也是你的幸运了(linux下就可能报错了)你的int arr[] = {5,3,6,1};对arr,它只有4个成员,且理论上后面肯定没有NULL的(C++的整形数组从来就没有说是NULL结尾的)所以你的if (*p!=NULL )及for (int* pp = p + 1; *pp!=NULL; pp++) 中的*pp!=NULL;完全不正确因为最后的不是NULL,所以*p会引起下标溢出的对C++的普通数组,若做为参数,它除了本身(首地址指针外),还必须将长度作为参数,这个也是C++很基础的内容了。