首先明确的是,p的类型应该不是unsigned long*型的。首先,(unsigned long*)p将p转换为指向unsigned long型的指针,然后前面加*取地址为p的unsigned long数据,即*(unsigned long*)p,之后,再将这个值转换为(void *)型的指针。总起来的意思就是,在地址p,有个unsigned long类型的数据,该数据实际上是个地址,以上表达式的结果就是这个地址。