int* p1[5];
因为[]的优先级高于*,所以p1先与[]结合,p1[5]:定义一个长度为5的数组,数组名为p1,int*修饰的是数组的内容,即数组中每个元素的类型。这条语句的完整解读是声明一个包含5个指向int指针类型的数组,数组名为p1;
int (*p2)[5];
*和p2被()扩起来,表示*和p2先结合,*p2此时表示定义了一个指针变量,指针变量名为p1,int (*p2) [5];就表示p2指针变量指向一个包含了5个指向int类型的数组,很明显p2是一个数组指针,这里没有给出数组名,也不需要给出数组名,是个匿名数组,可以直接通过数组指针操作数组。
int total = 0;
printf("请输入数组长度:\n");
scanf("%d",&total);
int s[total];
printf("向数组输入%d个整数\n",total);
for(int i=0;i= 0) {
printf("%d ",*(*p + length));
--length;
}
printf("\n");
printf("--------------------------------\n");
int index = 0;
printf("《模拟队列先进先出》\n");
while (index < total) {
printf("%d ",*(*p + index));
++index;
}
printf("\n");
//i--是先使用i的值,再执行i=i-1操作;--i是先执行i=i-1操作,再使用i的值