如何将包含运算符返回地址的指针赋值给指针变量?
How does the pointer containing an address returned by address of operator assigned to a pointer variable?
我理解我们不能直接将地址字面量分配给指针变量,因此运算符 (&) 的地址不会 return variable/operand 的地址作为字面量.
int* ptr{ 0x7ffd78ad698c }; // Compiler error
相反,它 return 是一个包含 variable/operand 地址的指针,然后我们的指针变量以某种方式设法仅从包含地址 returned 的指针中获取地址通过 operator(&) 的地址。
指针变量如何只从包含地址 return 运算符(&)的地址的指针中获取地址?指针 return 由运算符(&)的地址编辑的 lifetime/scope 是什么?指针变量取到它包含的地址后是否立即销毁?
您似乎对指针感到困惑。
首先,只有你做不到的原因
int* ptr{ 0x7ffd78ad698c }; // Compiler error
是因为编译器认为它很傻而且是个错误。如果你加上强制转换,编译器绝对会让你这样做。
int* ptr{ (int*)0x7ffd78ad698c }; // Compiles
(我还要指出,大多数人会使用 =
来编写此语句)
其次。指针没有生命周期。好吧,ptr
是一个变量,所以它有生命周期,但是存储在 ptr
中的地址 没有生命周期。它指向的是一个有生命周期的变量。但是地址本身 - 数字 0x7ffd78ad698c
- 没有生命周期。您的问题:“&
返回的指针的 lifetime/scope 是什么?”就像问“+
返回的数字的 lifetime/scope 是多少?”
请注意,当人们说“指针”时,有时他们指的是指针变量(它有一个 lifetime/scope 因为它是一个变量),有时他们指的是一个地址(不是因为它不是) .
address literal
C++ 中没有地址文字这样的东西。
0x7ffd78ad698c
这是一个整数文字。
What is the lifetime/scope of the pointer returned by address of operator(&)?
假设它应用于指针,结果是纯右值。
重载 operator&
会导致任何重载函数 returns。重载一元 operator&
非常罕见。
我理解我们不能直接将地址字面量分配给指针变量,因此运算符 (&) 的地址不会 return variable/operand 的地址作为字面量.
int* ptr{ 0x7ffd78ad698c }; // Compiler error
相反,它 return 是一个包含 variable/operand 地址的指针,然后我们的指针变量以某种方式设法仅从包含地址 returned 的指针中获取地址通过 operator(&) 的地址。
指针变量如何只从包含地址 return 运算符(&)的地址的指针中获取地址?指针 return 由运算符(&)的地址编辑的 lifetime/scope 是什么?指针变量取到它包含的地址后是否立即销毁?
您似乎对指针感到困惑。
首先,只有你做不到的原因
int* ptr{ 0x7ffd78ad698c }; // Compiler error
是因为编译器认为它很傻而且是个错误。如果你加上强制转换,编译器绝对会让你这样做。
int* ptr{ (int*)0x7ffd78ad698c }; // Compiles
(我还要指出,大多数人会使用 =
来编写此语句)
其次。指针没有生命周期。好吧,ptr
是一个变量,所以它有生命周期,但是存储在 ptr
中的地址 没有生命周期。它指向的是一个有生命周期的变量。但是地址本身 - 数字 0x7ffd78ad698c
- 没有生命周期。您的问题:“&
返回的指针的 lifetime/scope 是什么?”就像问“+
返回的数字的 lifetime/scope 是多少?”
请注意,当人们说“指针”时,有时他们指的是指针变量(它有一个 lifetime/scope 因为它是一个变量),有时他们指的是一个地址(不是因为它不是) .
address literal
C++ 中没有地址文字这样的东西。
0x7ffd78ad698c
这是一个整数文字。
What is the lifetime/scope of the pointer returned by address of operator(&)?
假设它应用于指针,结果是纯右值。
重载 operator&
会导致任何重载函数 returns。重载一元 operator&
非常罕见。