为什么printf在输出一个被赋值了数组的指针中的一个时不加*

int*pa,a[]={1,2}; pa=a; printf(“%d”,pa[1]); 这个不用*,输入数组中的一个元素时要用&,而一个整形变量也要,那为什么他们输出的时候只有一个需要*?

你说的是字符串数组吧,这是一个特例,字符串(%s)会根据指针去找里面的值
别的类型,如果是指针,那么输出的就是指针,如果是*,同时参数是指针,那么才是值
int a = 3;
int *p = &a;
printf("%d", (int)p); //地址
printf("%d", *p); //这才是3

不要*的是指向的地址,不是该指针开辟的地址

int *p[10];
char * p[10];
这两种是不一样的,第二种是10个字符串,第一种是10个指向int的指针。字符串是读到\0结束