取消引用指针 -vs- &-运算符
dereference a pointer -vs- &-operator
这两个
赋值会等价吗,即执行完全相同的东西吗?
*pointer = object
pointer = &object
,其中指针是指向"对象实例"的指针。
或者这只对基元类型有意义。
不,这些是不一样的。
pointer = &object
设置pointer
,使其指向 object
。
*pointer = object
将pointer
指向的事物的值设置为等于object
的值。
绝对不是。
*pointer = object
更改指针指向的内存。
pointer = &object
更改指针。
pointer ----> object1
&object ----> object
在第一种情况下,这变为:
pointer ----> object
&object ----> object
在第二种情况下:
----> object1 //could turn into a memory leak
&object, pointer ----> object
不,这些不是等价的。 第一个使指针的目标值等于右侧的对象。 第二个更改指针本身,使其指向右侧的对象。
换句话说,在第一个对象之后,内存中有两个对象的值等于object
的值。 在第二个之后,只有一个对象具有该值,此外还有一个指向该对象的指针。
NO.
第一个表达式将 Object 的值分配给指针。
假设指针变量指向0x1234,在第一次赋值后,地址0x1234将包含值"object"。
而第二个赋值将使指针指向对象的地址。
如果在第一个赋值指针之后更改值对象,则不会注意到任何内容。
其中,作为第二个赋值,如果您更改对象的值,则可以通过以下方式获取更新的值
*pointer.
相关文章:
- CRTP 中的复制赋值运算符 - gcc vs clang 和 msvc
- 未定义的引用和运算符 << vs me
- C++ std::stringstream 运算符<< vs (构造函数)
- c operator()括号 - 运算符type()vs type operator()
- 可以错误地使用赋值运算符而不是比较运算符的地方,= Vs ==
- 在使用C (Microsoft vs)中使用指针和新运算符时出错
- C++ - 函子 vs 内联函数 vs 运算符重载
- std::数组运算符[] vs get<>
- 条件运算符vs if then else
- 海湾合作委员会 : __sync_lock_test_and_set VS.= 具有易失变量的运算符
- 运算符重载,运算符+vs运算符+=
- 绕过自动生成的赋值运算符(VS 错误?
- std::istream 提取运算符(双精度或浮点数)在 VS 2012 中非常慢
- 取消引用指针 -vs- &-运算符
- C vs. Python - 条件语句中的运算符优先级
- C++迭代器运算符优先级问题 *it.method() vs (*it).method() vs it->method()
- [微软 VS 2013]C++在删除运算符"Debug Assertion Failed!"时失败
- VS 2012中的条件运算符类型转换
- 什么是优先!表达式!x——中的运算符vs——
- 为什么VS不为逻辑运算符定义可选的令牌?