#include <stdio.h>
#include <typeinfo.h>
int main()
{
int var = 0;
int a1d[10] = {1,2,3,4,5,6,7,8,9,0};
int *p_var = &var;
int (*p_a1d)[10]= &a1d;
printf("\n");
printf("\t&var:\t\t%s\n",typeid(&var).name());
printf("\t&a1d[0]:\t%s\n",typeid(&a1d[0]).name());
printf("\ta1d:\t\t%s\n",typeid(a1d).name());
printf("\t&a1d:\t\t%s\n",typeid(&a1d).name());
printf("\n");
int a2d[3][10] = {{0}};
int (*p1_a2d)[10] = a2d;
int (*p_a2d)[3][10] = &a2d;
printf("\ta2d:\t\t%s\n",typeid(a2d).name());
printf("\t&a2d[0][0]:\t%s\n",typeid(&a2d[0][0]).name());
printf("\ta2d[0]:\t\t%s\n",typeid(a2d[0]).name());
printf("\t&a2d[0]:\t%s\n",typeid(&a2d[0]).name());
printf("\t&a2d:\t\t%s\n",typeid(&a2d).name());
printf("\n");
int *p[4] = {a2d[0],a2d[1],a2d[2],a1d};
int **p2 = p;
int *(*p3)[4]=&p;
printf("\tp:\t\t%s\n",typeid(p).name());
printf("\tp[0]:\t\t%s\n",typeid(p[0]).name());
printf("\t&p[0]:\t\t%s\n",typeid(&p[0]).name());
printf("\tp2:\t\t%s\n",typeid(p2).name());
printf("\t&p:\t\t%s\n",typeid(&p).name());
printf("\n");
return 0;
}
&var: Pi
&a1d[0]: Pi
ald: A10_i
&ald: PA10_i
a2d: A3_A10_i
&a2d[0][0]: Pi
a2d[0]: A10_i
&a2d[0]: PA10_i
&a2d: PA3_A10_i
p: A4_Pi
p[0]: Pi
&p[0]: PPi
p2: PPi
&p: PA4_Pi
i:int
P:指针
数字:元素个数
A:数组
规则:后面修饰前面的
例如:PA10_i:包含10个整型元素的数组指针。