目录
举个例子
#include "iostream"
using namespace std;
int main(){
int temp = 110;
auto *a = &temp;
cout << "temp = " << temp<<endl;
cout << "&temp = " << &temp <<endl;
cout << "a = " << a <<endl;
cout << "*a = " << *a <<endl;
}
代码想必各位应该一看就懂,再来看一下它的输出:
代码中,temp
是一个整数变量,它存储了一个整数值。而 &temp
是对变量 temp
的地址进行取址操作,它返回的是指向 temp
的指针,这个指针存储了 temp
的地址。因此,&temp
的值是变量 temp
的地址,通常以十六进制表示。所以,&temp
的值是 0x61fe14,表示 temp
变量存储在内存中的地址是 0x61fe14。而 *a
是对指针 a
解引用后得到的值,它表示指针 a
所指向的内存中的内容。在这里,a
指向了变量 temp
,所以 *a
的值是 temp
的值,即 110
。
简单来说可以手动在*a = &temp加个括号(只是方便理解),即*(a = &temp)先通过&temp返回指向 temp
的指针地址0x61fe14赋值给a指针,然后a再通过 * 进行解引用得到具体的值110。
在使用的过程中可以把a和&temp画等号,*a和temp画等号,它们代表的值是一样的只是形式不同。