*p和*&p 有什么区别?

#include<stdio.h>
#include<iostream>
using namespace std;
int main(void) 
{
    int a=10;
    int *p=&a;
    int *&q = p;
    cout << "p的按地址求值"<<*&p<< endl;
    cout << "p的直接求值" << *p << endl;
    cout << "p的地址的值的值" << **&p << endl;
    system("pause");
    return 0;
}

p 表示的就是一个指针,而&p表示变量p的地址对于上面的程序来说&p!=&a,上面的程序指针p指向a的地址,此时p的值为a的地址**p的值相当于指向a的地址引用*(可理解为a存储的值),而当*&p时相当与对a进行了取地址此时*&p = &a;
&是取地址符号,是取指针里面的值,&p是先去指针p的地址值之后再按地址值取值。*p是直接去指针里的值。

posted @ 2019-09-09 23:43  江北一滴水  阅读(949)  评论(0编辑  收藏  举报