应该是因为int* p=10是直接把指针的值赋予10,也就是说p指向10这个地址,而char*s = "wbq"所做的步骤比*p=10多几步,那就是自动在常量区开辟一个空间然后放入"wbq\0"之后把相应的地址返回给*s,所以这2个赋值是不一样的。
而且Int *p=10是直接把地址单元编号为10的地址赋于p,地址编号为10的内存单元一般是系统所占用的,因此这样赋值通常会出错。对于s将指向字符串的首地址,字符串在定义时系统会自动开辟一段内存空间,这段内存空间不会是系统自己占用的空间,因此第二个赋值不会出错。