#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到控制台,任何人都可以解释如何?输出是 –
30
20
30
我在期待 –
10
20
30
我不知道在这种情况下多个间接是如何工作的.
最佳答案 由于此语句,变量ipp指向变量ip1
ipp=&ip1;
因此,指针ipp的任何解除引用都会产生指针ip1的值.因此,例如这句话
*ipp=ip2;
相当于
ip1 = ip2;
这句话
*ipp=&k;
相当于
ip1 = &k;
结果ip1包含变量k的地址,而ipp包含ip1本身的地址.
而这些陈述
cout<<*ip1<<endl;
//...
cout<<**ipp;
除了由运算符调用提供的换行符之外,产生相同的结果<