美文网首页
二级指针作为函数参数

二级指针作为函数参数

作者: annge | 来源:发表于2020-02-16 21:36 被阅读0次
    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

    相关文章

      网友评论

          本文标题:二级指针作为函数参数

          本文链接:https://www.haomeiwen.com/subject/tkamfhtx.html