问题1.C语言中为什么要使用多重指针 它有什么具体用处
问题2. 如果int * p 可以这样解释定义了一个名叫p的指针它可以存储一个int型空间地址 那么int ***p 应该阐述 地址的地址的地址 是个什么东西啊? 头都弄晕
哪位高手能从内存的角度给我分析下上面两个问题
其实只要清楚一点:指针也是一个变量,所以它也是有地址的,你就会不头晕了。
int ***p也就是一个指针而已,只不过,它是int **类型的指针. 假如有一个变量a,三个指针p, p1, p2. a的地址放在p2里, 而p2是个指针,自己也是有地址的,而p2的地址放在p1里, p1也是个指针,它的地址又放在p里。所以我们想要通过p来取出a的值,那就要先从p中取出p1的地址,然后找到p1,再从p1中取出p2的地址,再找到a,取出a的值。所以这几个变量的定义和赋值分别是 :
int a ;如果把内存单元比喻成是一个个的信箱,每个信箱的钥匙就代表信箱的地址,那就是a信箱里面放的是a的值,a的钥匙放到p2信箱里,p2的钥匙放到p1的信箱里, p1的钥匙放到p信箱里。
这个在编程中还是有用处的,特别是在对复杂的数据结构做处理的时候,这样的指针优势就来了,处理灵活,速度快,但也会带来很大的风险。