一.
先分清三个概念
int *p;
int a = 10;
p = &a;
*p:p的值,取p指向的那个内存里的值,10
p:p的指向,p指向的那个内存的地址,a的地址
&p:p的地址,取p这个指针本身的地址
二.
再来看一个例子
#include<iostream>
using namespace std;
int a= 10;
int b = 100;
int *q;
void func(int *p)
{
cout<<"func:&p="<<&p<<",p="<<p<<endl; //note:3 地址(p的地址) 地址(a的地址、p的指向)
p = &b;
cout<<"func:&p="<<&p<<",p="<<p<<endl; //note:4 地址(p的地址) 地址(b的地址、p的指向)
}
int main()
{
cout<<"&a="<<&a<<",&b="<<&b<<",&q="<<&q<<endl; //note:1 地址(a的地址),地址(b的地址),地址(q的地址)
q = &a;
cout<<"*q="<<*q<<",q="<<q<<",&q="<<&q<<endl; //note:2 a的值 地址(a的地址、q的指向) 地址(q的地址)
func(q);
cout<<"*q="<<*q<<",