指针的指针--------二级指针(做一下总结,免得忘了)

    技术2024-09-26  57

    1. Char **p//这个p是二级指针

    (类似于:char *pp是一级指针)

    地址1——————>地址2————————>变量

       p               *p                    **p

    2 *除去定义时的作用,*是取值符号

    二级指针就是跳2级。(从地址1跳到地址2是一级)

    例程序:

    main()

    {static int a[5]={1,3,5,7,9};

     int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};

     int **p,i;

     p=num;//---------------注意这个!

    //p存储了数组num的地址,*p存储了数组num中的值(值也为地址),**p连跳2级,表、、//示数组a中的值

     for(i=0;i<5;i++)

       {printf("%d/t",**p);p++;}

    }

    例程序2

    #include "stdio.h"

    #include "stdlib.h"

    #include "time.h"

    //通过指针访问变量称为间接访问,通过指针的指针访问变量构成“二级间址”

    typedef struct Node

    {

    int data;

    }Seqlist,*Slink;

    /

    void InitSeqlist(Seqlist *L)

    {

        (*L).data=1;//这个(*L)实际上是一个确定的变量,只能用.不能用->

    }

    /

    void InitSlink(Slink *P)//形参是二级地址

    {

    *P=(Slink)malloc(sizeof(Seqlist));

    (*P)->data=2;

    }

    int main()

    {

    Seqlist *P;//一级指针

    Seqlist L;//变量

    InitSeqlist(&L);//参数是一级指针

    InitSlink(&P);//参数是二级指针

    printf("%d/n",L.data);

    printf("%d",P->data);//输出是2

    return 0;

    }

    最新回复(0)