指针的地址是什么意思?
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
本身的地址 .
并且a
和b
没有相同的地址。
与这个例子类似(理解) -
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?
我们声明了一个变量(指针,数组,只是int
,char
)这些都是在程序中声明的,并存储在内存中。由于这些存储在内存中,因此它们具有唯一的地址。
请记住,您计算机上的地址本身将是 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?
地址是一种指针值,但指针值不指向值;他们指向对象或函数。 &a
与a
不同,因为两个指针指向不同的对象;一个指向 a
,另一个指向 b
。
谢谢大家,我知道它出了什么问题。
事实上,我通过 int* a = &b;
在内存中创建了一个指针,但我认为我没有,所以这是我的错误。
但是我认为你不能输出内存中不存在的东西的地址,比如cout<<&(&a)
,编译器会告诉你“&”运算符需要一个左值变量。
而如果你想输出指向a的指针的地址,你定义一个指向指针变量的指针int **p2p=&a
,然后你就可以cout<<&p2p
,就可以了。
如果我们有代码:
int b = 10;
int* a = &b;
std::cout << a << " " << &a << " ";
因此,地址不同。
但是指针的地址是什么意思呢?
指针具有变量地址的值,因为我们在内存中有一个变量。但是我们内存中并没有存储地址的值,那为什么我们有一个地址的地址呢?
可能是我理解有误,谢谢大家的帮助。
std::cout << a << " " << &a<<" ";
是的,两者不同。
1. a
已分配地址 b
,因此它打印地址 b
.
2. &a
打印指针 a
本身的地址 .
并且a
和b
没有相同的地址。
与这个例子类似(理解) -
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?
我们声明了一个变量(指针,数组,只是int
,char
)这些都是在程序中声明的,并存储在内存中。由于这些存储在内存中,因此它们具有唯一的地址。
请记住,您计算机上的地址本身将是 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?
地址是一种指针值,但指针值不指向值;他们指向对象或函数。 &a
与a
不同,因为两个指针指向不同的对象;一个指向 a
,另一个指向 b
。
谢谢大家,我知道它出了什么问题。
事实上,我通过 int* a = &b;
在内存中创建了一个指针,但我认为我没有,所以这是我的错误。
但是我认为你不能输出内存中不存在的东西的地址,比如cout<<&(&a)
,编译器会告诉你“&”运算符需要一个左值变量。
而如果你想输出指向a的指针的地址,你定义一个指向指针变量的指针int **p2p=&a
,然后你就可以cout<<&p2p
,就可以了。