void Func2(int **ptr)
{
int *ptr2;
ptr2 = *ptr;
cout << __LINE__ << ": ptr=" << ptr << endl; //76 输出二级指针ptr中存放的数据(为&p1)
cout << __LINE__ << ":*ptr="<< *ptr << endl; //77 输出二级指针ptr的一级解引用,因为ptr中存放的&p1,所以*ptr输出的是p1的地址中所存放的数据,又因为p1中所存放的是&var,所以输出结果为var1的地址
cout << __LINE__ << ":*ptr2=" << *ptr2 << endl; //78 ptr2的解引用,因为ptr2中存放的是*ptr,*ptr是二级指针ptr的一级解引用,即存放的是var1的地址,对var1的地址进行解引用输出的是var1的值
cout << __LINE__ << ":ptr2=" << ptr2 << endl; //79 ptr2中存放的是*ptr,参考77行注释
}
int main(void)
{
int var1 = 12;
int *p1 = &var1;
/* testCreateListHead();
ForeachList(List);
cout << endl;
ForeachList(List);
*/
cout << __LINE__ << ":&var=" << &var1 << endl; //91 输出变量var在内存中的地址
cout << __LINE__ << ": &p1=" << &p1 << endl; //92 输出指针变量p1在内存中的地址
cout << __LINE__ << ": p1=" << p1 << endl; //93 输出指针变量 p1中存放的内容(为&var1)
Func2(&p1);
return 0;
}
程序输出结果:
91:&var=0x7ffffffed94c
92: &p1=0x7ffffffed950
93: p1=0x7ffffffed94c
76: ptr=0x7ffffffed950
77: *ptr=0x7ffffffed94c
78: *ptr2=12
79:ptr2=0x7ffffffed94c
网友评论