- 是
*&x
總是等於x
?如果不是,它什麼時候不是? - 是
&*x
總是等於x
?如果不是,它什麼時候不是?
我的猜測是,(1)永遠是真實的,但(2)並不總是正確的,因爲x
可能並不總是一個指針,所以我們不能說出*x
。C++:地址解引用和取消引用地址的地址
*&x
總是等於x
?如果不是,它什麼時候不是?&*x
總是等於x
?如果不是,它什麼時候不是?我的猜測是,(1)永遠是真實的,但(2)並不總是正確的,因爲x
可能並不總是一個指針,所以我們不能說出*x
。C++:地址解引用和取消引用地址的地址
在你的第一個例子中,你得到地址x
(它給你一個指向x
的指針),然後你將該指針重新設置回x
。所以是啊,應該是這樣,除非x
是一個超載運營商*
或&
的類。
你的第二個例子只適用於pointers
或classes
已經超載了*
運算符。
如果它與原始指針一起使用,那麼它應該是相同的。您尊重x
,它將返回對存儲在x
中的值的引用,然後獲取存儲該值的地址,當然這是x
。
如果它與pointer
到class
一起使用,並且class
已經超載了&
運算符,則它不一定是。
class A
{
public:
int v;
//int operator*() { return v; }
int * operator&() { return &v; }
};
A* w = new A();
int* ptr = &*w;
是和否,因爲*&x
意味着它是參考指針意義
int v1 = 10; int *v2 = &v1; int *&v3 = v2; cout << *v3; *v2 = 11; cout << *v3;
會發出放10和11.While聲明*&x
並不意味着獲取v3地址的值。在這種情況下,v3是指向它的指針的地址。但是如果你使用* & x外部聲明它會給你存儲在v3地址的值。
當'x'是一個指針時,第二個似乎不是非法的,那麼'&* x'就是'x'指向的變量的地址。 – marczoid
到查找操作符重載。 –
你的猜測是正確的(因爲你指出 - 得到它,指出?:P)。 –
@CaitLANJenner否和否。請記住,運營商超載。 – juanchopanza