1.p[i]好一些
2.如果是一般类型比较小的,比如int p[10], char p[10]这个用指针和用数组没啥区别
但是如果是一个大型的结构体,比如
struct str
{
int a[1000],
char b[100],
}p[10];
这个结构体的大小为4100
这个时候,假设i = 2
*(p + i )就相当于*(p + 2),相当于p夸了2个单位的结构体大小(4100)才指到p的第二个位置,然后才取值
而p[2]就直接可以取到第二个结构体的值了
3,第二种方法效率高一些,原因如第二个
4,这个我也说不好。你做多了C的东西自然而然就知道了