你要搞清两个概念:指针在定义和使用时的差别。
一个是定义的时候,int *p = &n,那么说明p是一个地址,它指向n这个变量。
一个是使用时 *p=&n,那么说明p是二级指针,即它指向地址的地址,那么*p仍然是地址,它指向n这个变量。
*p=&n这个只能是在定义指针p时使用,例如int *p=&n. 而p=&n,是在已经定义好指针p的前提下用,例如:int *p; p=&n; 如果给指针P赋值,是不可以用*p=&n的,因为此时*p代表它所指向的变量的值。
没有区别啊。
第一个 int n = 10; int *p = &n; 是在定义p指针时即初始化;
第二个 int n = 10; int *p = NULL; p = &n; 是先定义指针,再初始化;
这里跟二级指针无关啦。所谓二级指针应该就是指向指针的指针。
其实指针本质上只是一个内存地址值。
没有什么区别,都是将n的地址赋值给指针p