将指针存储在指针中

时间:2018-06-07 22:31:39

标签: c++ pointers memory-address

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;?

1 个答案:

答案 0 :(得分:3)

逻辑没有变化。如果要分配地址,则需要使用address-of运算符(&amp;)。您为var执行了此操作,但未对intptr执行此操作,因此您可以得到您所要求的内容。

试试int **intptr1 = &intptr;。请注意类型声明中的差异。 intptr1不是指向int的指针;它是一个指向指针的指针。