#include<iostream>#include<conio.h>using namespace std;int main(){ int i=10, j=20, k=30; int *ip1, *ip2, **ipp; ip1=&i; ip2=&j; ipp=&ip1; *ipp=ip2; *ipp=&k; cout<<*ip1<<endl; cout<<*ip2<<endl; cout<<**ipp; getch();}cout<<*ip1; 行将 30 打印到控制台,谁能解释一下?输出是 -302030我期待——102030我不知道在这种情况下多重间接是如何工作的。 最佳答案 由于这个语句,变量 ipp 指向变量 ip1ipp=&ip1;因此,对指针 ipp 的任何取消引用都会产生指针 ip1 的值。因此,例如这个声明*ipp=ip2;相当于ip1 = ip2;和这个声明*ipp=&k;相当于ip1 = &k;结果 ip1 包含变量 k 的地址,而 ipp 包含 ip1 本身的地址。而这些说法cout<<*ip1<<endl;//...cout<<**ipp;除了在第一条语句中使用 endl 调用运算符 k 的值。关于c++ - 这个多重间接是如何工作的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38585667/
10-16 04:49