C++地址和指针
C++ address and pointers
我正在阅读一本C++教科书,我遇到了以下练习。
是真是假?解释:
A. If (x == y) then (&x == &y).
B. If (x == y) then (*x == *y).
教科书上说A是真的,B是假的,但我相信应该是相反的吗?仅仅因为 x == y 并不意味着 &x 和 &y 具有相同的地址,我不明白为什么 B 是假的。
A 是假的。&x == &y
的陈述与说0x001F == 0x001E
是错误的相同。 然而,B是正确的。通过*x
取消引用指针实际上是比较存储在这些地址的值。希望这有帮助。
首先,我解释这个问题,即对于表达式格式良好的任何类型,命题都必须为真。
A. 显然是假的,因为两个对象可以具有相同的值,但不能存储在同一个地址中。但并非所有情况都是错误的。例如,当一个是对另一个的引用时。
B.也是假的,但不太清楚。如果等于和/或取消引用运算符被复杂的功能重载,则不能保证命题成立。但是对于指向基本类型的简单指针,这个命题是正确的。
因此,如果我们忽略非基本类型的可能性,这本书的答案似乎确实是相反的。考虑到重载,B似乎是偶然的,而A只是错了。
相关文章:
- CUDA:统一内存和指针地址的更改
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 向指针地址添加 20 个字节偏移量
- 如何理解智能指针的底层指针地址?
- 初学者问题:C++指针/地址 - 和变量之后不是以前?
- 返回数组中值的指针地址
- C++向指针地址添加 4 个字节
- 指针地址的内存偶尔更改了函数前和后返回
- 如何根据指针地址获取指针内容
- C++ 将指针地址传递给函数
- 直接从指针/地址访问数组的元素
- 如何在没有作弊引擎的情况下从其他应用程序获取指针地址?
- 如何保存指针地址,以便另一个指针可以继续处理它
- 间接寻址运算符如何返回带有运算符重载的指针地址
- 使用已删除的指针地址.据我所知,
- 如何保护类外用户可以修改的指针地址?C++
- 多个调用构造函数将更改C 中的成员指针地址
- 类对象指针的向量:如何在指针地址获得价值?C 和SDL_RECT
- Visual Studio C 2K15-在指针地址上获取错误
- 指针地址和参考混乱