&是取地址而(int*)p1只是把整数p1转换成指针类型,而输出整型指针类型就是输出这个指针指向的地址的16进制表示。这里(int*)p1指向内存中00000017的未知内存区域,而十六进制的17等于十进制的23。而&p1则是整型变量p1的地址。
&p1是取p1的地址(int*)p1是把p1这个变量的值当作int类型指针进行强制转换23就是十六进制的17