多级指针
阿萨
#include <stdio.h>
int main ()
{
int i = 10 ;
int *p = &i; //int *p = &i 表示 int *类型只能存放int 类型的地址
int **q = &p ; //int **q = &q 表示in ** 类型只能存放int *类型的地址
int ***r = &q ; //nt ***r 表示 int***类型只能存放 int** 类型变量的地址。
printf("%d %d %d ",*p,**q,***r);
//输出结果:10 10 10
}
*r 存放的是q的地址;
**r存放的是p的地址;
***r存放的是i的地址;
所以 **r ,*q , p 都表示 p的地址
如何通过函数修改指针的内容
#include <stdio.h>
void g(int **q)
{
int a = 5;
*q = &a ; //int **q 只能存放int * 类型变量的地址 ,且*q就是p ,故将变量类型为int的a的地址赋给*q就改变了p变量所保存的地址 ;
}
int main (void)
{
int i = 10;
int * p = &i ;
g(&p); //取指针变量p的地址,即&p是int **类型, 将int **p发送给g()函数的形参int **q
printf("%d",*p);
return 0 ;
}