如何解决指针包含的地址如何由分配给指针变量的运算符的地址返回?
我了解一个事实,我们不能直接将地址文字分配给指针变量,因此,operator(&)的地址不会将变量/操作数的地址作为文字返回。
int* ptr{ 0x7ffd78ad698c }; // Compiler error
相反,它返回一个包含变量/操作数地址的指针,然后我们的指针变量设法以某种方式设法从包含由操作符(&)地址返回的地址的指针中获取地址。
指针变量如何仅从包含由运算符(&)的地址返回的地址的指针获取地址?由操作符(&)的地址返回的指针的生存期/范围是多少?指针变量获取它包含的地址后,它会立即被销毁吗?
解决方法
您似乎对指针感到困惑。
首先,只有 个不能执行的原因
int* ptr{ 0x7ffd78ad698c }; // Compiler error
是因为编译器认为它很愚蠢并且是一个错误。如果添加强制转换,编译器绝对会允许您执行此操作。
int* ptr{ (int*)0x7ffd78ad698c }; // Compiles
(我还要指出,大多数人会使用=
来写此语句)
第二。指针没有寿命。好吧,ptr
是一个变量,因此具有生存期,但是存储在 ptr
中的地址没有生存期。它所指向的是一个具有生命周期的变量。但是地址本身-数字0x7ffd78ad698c
-没有生命周期。您的问题:“ &
返回的指针的生存期/范围是多少?”就像问“ +
返回的数字的寿命/范围是什么?”
请注意,当人们说“指针”时,有时是指指针变量(因为它是变量,所以具有生命周期/作用域),有时又指地址(因为不是,所以没有地址)。
,地址文字
在C ++中没有地址字面量。
0x7ffd78ad698c
这是一个整数文字。
由运算符(&)的地址返回的指针的生存期/范围是多少?
假设将其应用于指针,则结果为prvalue。
重载的operator&
会导致任何重载函数返回。重载一元operator&
非常少。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。