#include<stdio.h>
int main()
{ int i,a[4]={101,102,103,104}
for(i=0i<4i++)
printf("%p:%d\n",a+i,a[i])
return 0
}
定义二维数组a定义一个四个元素的一维数组b,初始值为二维数组前四个元素,由小到大排序。
从二维数组第五个元素开始遍历二维数组,逐一与b[3]比较,如果比b[3]小,则加入到b中,保持b的四个元素有序,同时抛弃原始的b[3]
遍历结束后,还存在b中的四个元素,就是最小的四个了。
int (*p)[4]是将p定义成了数组指针(即指向一维数组的指针)。既然要指向一维数组,就得知道可以指向的一维数组的大小,[]中就是指定可以指向的一维数组的大小的。
而这里4说明只能用p指向具有4个int元素的一维数组。
当然用p指向列大小为4的二维数组的某一行也是可以的,就像图中一样。
下面给个例子:
int a[4]={1,2,3,4}
int b[2][4]={5,6,7,8,9,10,11,12}
int (*p)[4]
//下面都可以
p=&a
p=b
p=b+1