C语言高手进关于双重指针 多重指针的问题

Python09

C语言高手进关于双重指针 多重指针的问题,第1张

1、多重指针常用于多维数组或者多维字符串的操作,有时也用于函数参数传递;

2、指针是C语言的一个重要知识点,你可以简单理解为地址。多重指针需要通过多次寻址才能找到实际的值。这里一个示例:

# include<stdio.h>

int main()

{

unsigned int x=0x1234

unsigned int *p1=NULL

unsigned int **p2=NULL

unsigned int ***p3=NULL

p1=&x

p2=&p1

p3=&p2

printf("\nx=0X%X, &x=:0X%X",x,&x)

printf("\n *p1=0X%X, p1=:0X%X, &p1=:0X%X",*p1,p1,&p1)

printf("\n **p2=0X%X, *p2=:0X%X, p2=:0X%X, &p2=0X%X",**p2,*p2,p2,&p2)

printf("\n***p3=0X%X, **p3=:0X%X, *p3=:0X%X, p3=:0X%X, &p3=:0X%X",***p3,**p3,*p3,p3,&p3)

return 0

}

显示结果:

x=0X1234, &x=:0X6C56C298

*p1=0X1234, p1=:0X6C56C298, &p1=:0X6C56C290

**p2=0X1234, *p2=:0X6C56C298, p2=:0X6C56C290, &p2=0X6C56C288

***p3=0X1234, **p3=:0X6C56C298, *p3=:0X6C56C290, p3=:0X6C56C288, &p3=:0X6C56C280

所有类型变量都可以通过&获得该变量在内存中的地址,从以上示例看出

变量x在内存中的地址为:0X6C56C298

指针变量p1的地址为:0X6C56C290

指针变量p2的地址为:0X6C56C288

指针变量p3的地址为:0X6C56C280

以上变量按照定义先后顺序在内存中从高地址到低地址连续存储的,每个变量占据8个字节空间。

其中p3的值(也就是0X6C56C280这个地址的内存中存放的数据)为p2的地址。

p2的值(也就是0X6C56C288这个地址的内存中存放的数据)为p1的地址。

p1的值(也就是0X6C56C290这个地址的内存中存放的数据)为x的地址。

要取得最终的0x1234这个数据,几重指针前面就有几个*,比如***p3就表示0x1234这个具体的值。只要少一个*,那么获得的就是地址。

你的意思是这样吗

List *L;

insert(&L);//初始化insert(List **L)

你问的是 初始化中 为什么要双重指针吗?

如果是的话,那么意思是,你想通过函数来改变L的值,但是L是指针类型,所以你要改变它的值就要传L的地址进去,因为双重指针的意思就是指向指针的指针,就是指针的地址,那么**L就是指向指针L的地址,那么通过函数调用双重指针就能改变指针L的值。

道理就是:要传递变量的地址才能使变量的值发生变化.现在的变量是指针型,所以要传指针类型的地址,也就是双重指针。

不知道我理解对了没