指针的地址是什么意思?

What is the meaning of the address of a pointer?

如果我们有代码:

int b = 10;
int* a = &b;
std::cout << a << " " << &a << " ";

因此,地址不同。

但是指针的地址是什么意思呢?

指针具有变量地址的值,因为我们在内存中有一个变量。但是我们内存中并没有存储地址的值,那为什么我们有一个地址的地址呢?

可能是我理解有误,谢谢大家的帮助。

std::cout << a << " " << &a<<" ";

是的,两者不同。

1. a 已分配地址 b ,因此它打印地址 b.

2. &a 打印指针 a 本身的地址 .

并且ab没有相同的地址。

与这个例子类似(理解) -

int b=9;

如果你打印 b 你会得到它的值,即 9 但如果你打印 &b 你会得到它的地址,并且它们绝不会相同。

指针也是如此。

A pointer has the value of a variable's address, since we have a variable in memory. But we don't have the value of address stored in memory, so why we have the address of an address?

我们声明了一个变量(指针,数组,只是intchar)这些都是在程序中声明的,并存储在内存中。由于这些存储在内存中,因此它们具有唯一的地址。

请记住,您计算机上的地址本身将是 32 位或 64 位值(取决于您的系统架构)。

在你的例子中,你有整数 b 在某个地址中存储值 10,我们称它为地址 500

然后你有一个指针a,它存储了值500,IT有自己的地址。

有什么意义?你实际上可以有双指针(或更多)。

你明白在

char* string = "hello";

字符串是指向字符数组开头的指针

然后

char** strings;

是一个指向 char* 的指针。例如,这就是您可以做一个数组数组的方式。

A pointer has the value of a variable's address

我假设一个变量是指对应于变量的对象。尽管如此,这并不是严格意义上的真实情况,这是我们开始区分 地址 指针值 .

的边缘情况

指针值根本不指向对象。例如,考虑空指针。

根据定义,地址确实指向对象...或函数。

what's the meaning of address of a pointer?

术语指针的地址是有意义的,如果你能想象一个声明为存储指针的变量(例如T *var;)并且你获取它的地址( &var).

so why we have the address of an address?

地址是一种指针值,但指针值不指向值;他们指向对象或函数。 &aa不同,因为两个指针指向不同的对象;一个指向 a,另一个指向 b

谢谢大家,我知道它出了什么问题。

事实上,我通过 int* a = &b; 在内存中创建了一个指针,但我认为我没有,所以这是我的错误。

但是我认为你不能输出内存中不存在的东西的地址,比如cout<<&(&a),编译器会告诉你“&”运算符需要一个左值变量。

而如果你想输出指向a的指针的地址,你定义一个指向指针变量的指针int **p2p=&a,然后你就可以cout<<&p2p,就可以了。