多级指针
二级指针就是指向一个一级指针变量地址的指针
int a=10;
int*p=&a;\\一级指针
*p=100\\*p就是a
int**q=&p;\\二级指针
\\*q就是p
\\**就是a (*p)
int***t&q;\\三级指针
\\*t就是 q
\\**t就是p
\\***t就是a
#include<stdio.h>
int main()
{
int a={1,2,3};
int b={4,5,6};
int c={7,8,9};
int*arr[]={a,b,c};
\\指针数组和二级指针建立关系
int**p=arr;
printf("%d\n",**p);\\arr[0][0]
\\二级指针加一个偏移量 相当于跳过了一个一维数组的大小
printf("%d\n",**(p+1));\\arr[1][0]
printf("%d\n",*(*(p+1)+1));
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("%d\n",*(*(p+i)+j));
\\ printf("%d\n",*(*p[i]+j));
}
}
put("");
}
输出结果:
1
4
5
123
456
789
#include<stdio.h>
int main()
{
int a=10;
int b=20;
int *p=&a;
int**q=&p;
\\*q=&b;\\等价于p=&b
**q=100;
printf("%d\n",*p);
printf("%d\n",a);
return 0;
}
输出结果:
100
100