看懂二维数组的指针

首先有((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 型的)

posted @ 2023-01-11 19:09  MITE's_BKY  阅读(196)  评论(0)    收藏  举报