C++ 在指针中存储指针
C++ 在指针中存储指针,c++,pointers,memory-address,C++,Pointers,Memory Address,int-var=5; int*intptr=&var; int*intptr1=intptr; std::cout逻辑没有变化。如果要分配地址,需要使用运算符(&)的地址。您这样做是为了var,而不是为了intptr,所以您得到的正是您想要的 尝试int**intptr1=&intptr。请注意类型声明中的差异intptr1不是指向int的指针;这是一个指向int的指针。也许看到int**intptr1=&intptr会给你一个启示。将指针的值分配给另一个相同类型的指针与将int的值分配给另一个
int-var=5;
int*intptr=&var;
int*intptr1=intptr;
std::cout逻辑没有变化。如果要分配地址,需要使用运算符(&)的地址。您这样做是为了var
,而不是为了intptr
,所以您得到的正是您想要的
尝试int**intptr1=&intptr代码>。请注意类型声明中的差异intptr1
不是指向int的指针;这是一个指向int的指针。也许看到int**intptr1=&intptr
会给你一个启示。将指针的值分配给另一个相同类型的指针与将int
的值分配给另一个int
没有什么不同。您正在制作该值的副本。指针在这方面没有什么不同。是的,但是在执行时:“int*intptr1=&intptr”给了我一条错误消息。所以双星**解决了我的问题。谢谢@Moosey的旁注:添加间接层可以解决棘手的问题(这里出现的许多链表实现将通过利用指向指针的指针得到极大的帮助)但它们也可能是一个信号,表明你对这个问题的思考还不够深入,正在走向一场概念上的灾难。在你获得额外的*
之前,仔细想想成为被嘲笑为三星级程序员的不利因素。
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