#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main01()
{
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 ",**p);//1
//二级指针加偏移量相当于跳过了一个一维数组大小
printf("%d ",**(p+1));//4
// 一级指针加偏移量相当于跳过了一个元素
printf("%d ",*(*p+1));//2
printf("%d ",*(*(p+1)+1))//5
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
//1,2,3,4,5,6,7,8,9,10
//printf("%d ",p[i][j]);
//printf("%d ",*(p[i]+j))
//printf("%d ",*(*(p+i)+j));
}
puts("");
}
return EXIT_SUCCESS;
}
int main02(void)
{
int a=10;
int b=20;
int*p=&a;
int**pp=&p;
//二级指针对应的野指针
//pp=100;
//*pp=100;
//printf("%d ",*p);//10
//二级指针pp加*等同一级指针,再回*等同于变量
**pp=100;
printf("%d ",*p);//100
printf("%d ",a);//100
return 0;
}
int main04(void)
{
int a=10;
int b=20;
int*p=&a;
int**pp=&p;
int***ppp=&pp;
//*ppp==pp=&p;
//**ppp=*pp=p==&a;
//***ppp==**pp==*p==a;
return 0;
}