看懂二维数组的指针
首先有((a+i)+j) = a[i][j];
然后看图:

一个实例:
#include <stdio.h>
void average(float *p, int n)
{
float *p_end;
float sum, aver;
p_end = p + n - 1;
for (; p < p_end; p++)
{
sum = sum + (*p);
}
aver = sum / n;
printf("%f\n", aver);
}
void search(float (*p)[4], int n) //p为指向一个有4个元素的一维数组的指针
{
printf("第%d个人的各项成绩为:\n", n);
int i;
for (i = 0; i < 4; i++)
{
printf("%f ", *(*(p + n) + i));
}
printf("\n");
}
int main()
{
float score[3][4] = {{65, 67, 70, 60}, {80, 87, 90, 81}, {90, 99, 100, 98}};
average(*score, 12);//注意score前有加*
search(score, 2);
return 0;
}
指针数组:
void fun(int p[4]) //一个指向4个指针的数组的指针,[]的优先级高于
指向指针的指针(二重指针):
int **p 注意区别二重指针和指向二位数组的指针 (p指向的数据类型是 int 型的)

浙公网安备 33010602011771号