美文网首页
那些年,搞不清的指针

那些年,搞不清的指针

作者: 里里角 | 来源:发表于2018-08-24 17:10 被阅读7次

    函数指针

    函数指针的定义
    函数返回值(*pf) 函数形参列表;此时pf未初始化;
    用与其类型匹配的函数名对其赋值即可


    数组指针

    二维数组数组名是一个二级指针,二级指针+1指向下一行;
    形如int (*p)[10],int * a[10], p,a也是个二级指针;
    二级指针解一次指针,得到一级指针,此一级指针+1指向下一个元素;
    二级指针加[]等同于解一次指针

    同理,若有

    int a[]={1,2,3,4}
    

    则&a为二级指针

    
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
        int v[2][10]={{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};
        int (*a)[10]=v;
    
        cout<<"&v[0][0]: "<<&v[0][0]<<endl;
        cout<<"&v[0][1]: "<<&v[0][1]<<endl;
        cout<<"&v[1][0]: "<<&v[1][0]<<endl;
    
        cout<<"v是二级指针: "<<v<<" *v:"<<*v<<" **v:"<<**v<<endl;
        cout<<"a是二级指针: "<<a<<" *a:"<<*a<<" **a:"<<**a<<endl;
        cout<<"*v是一级指针 "<<*v<<endl;
        cout<<"*a是一级指针 "<<*a<<endl;
        cout<<"**a指针已解完,表示元素: "<<**a<<endl;
    
        cout<<"v+1:二级指针+1,指向下一行的首地址: "<<v+1<<" *(v+1):"<<*(v+1)<<"  **(v+1)="<<**(v+1)<<endl;
        cout<<"a+1:二级指针+1,指向下一行的首地址: "<<a+1<<" *(a+1):"<<*(a+1)<<"  **(a+1)="<<**(a+1)<<endl;
        cout<<"*v+1:一级指针+1,指向下一个元素的首地址: "<<*v+1<<"  *(*v+1)="<<*(*v+1)<<endl;
        cout<<"*a+1:一级指针+1,指向下一个元素的首地址: "<<*a+1<<"  *(*a+1)="<<*(*a+1)<<endl;
        cout<<**a+1<<endl;
    
    }
    
    image.png
    image.png

    相关文章

      网友评论

          本文标题:那些年,搞不清的指针

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