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

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值