int var = 5;
int *intptr = &var;
int *intptr1 = intptr;
std::cout << "adress of var : " << intptr << std::endl; //0x00EFFB05
std::cout << "adress of var : " << &var << std::endl; //0x00EFFB05
std::cout << "value of var : " << var << std::endl; // 5
std::cout << "value of var : " << *intptr << std::endl; // 5
std::cout << "adress of intptr: " << &intptr << std::endl; //0x00EFFB44
std::cout << "adress of var : " << intptr1 << std::endl; //0x00EFFB05 /In my unterstanding, the adress of intptr should be here, instead we have the adress of var
在我指定&#34; var&#34;的行中到&#34; intptr&#34;指针,var的地址成为指针的值。
在我指定指针&#34; intptr&#34;的行中指针&#34; intptr1&#34;,&#34; intptr&#34;的地址不会成为&#34; intptr1&#34;的价值,而是&#34; intptr&#34;的值。成为&#34; intptr1&#34;的值,这是var。
的地址1:为指针指向指针时为什么会改变逻辑?
2:我如何存储&#34; intptr&#34;的地址? to&#34; intptr1&#34;?
答案 0 :(得分:3)
逻辑没有变化。如果要分配地址,则需要使用address-of运算符(&amp;)。您为var
执行了此操作,但未对intptr
执行此操作,因此您可以得到您所要求的内容。
试试int **intptr1 = &intptr;
。请注意类型声明中的差异。 intptr1
不是指向int的指针;它是一个指向指针的指针。