#include "stdio.h"
struct t
{
unsigned char test[5];
} ;

void test(struct t **p)
{
(*p)->test[0] = 5;
}

int main()
{
unsigned char qwe;
struct t *x;
struct t y;
x = &y;
test(&x);
for(int i = 0;i < 5;i++)
{
printf("%d ",y.test[i]);
}
return 0;
}

其中x = &y,x指向了y的地址,p = &x,p指向了x的地址,也就是p指向了指针的地址
其中想通过p改变y的数据,就是需要(*p)->test[0] = 5;括号是必须需要的,不然会报错