六条咸鱼-Wolves-Day4

指针变量与二维数组

指针=&数组名[数a][数b]  *指针=指针指定的变量的值

指针+i=&数组名[数a][数b]后面第i个元素 

六条咸鱼-Wolves-Day4_第1张图片

 上面程序中,刚开始*p的值为1,之后×2后值就变为2

用指针输出一个二维数组各元素的值

#include "stdio.h"
void main()
{
 int a[3][4]={1,2,3,4,5,6,6,5,4,3,2,1};
 int *p;
 for(p=&a[0][0];p<=&a[2][3];p++)
 {
 	if((p-&a[0][0])%4==0)
 	printf("\n");
 	printf("%d ",*p);
 }   
 printf("\n");
 return 0;
}

输出结果如下:

六条咸鱼-Wolves-Day4_第2张图片

&数组名[数a][数b]等价于数组名[数a]+数b

数组名[数a][数b]等价于*(数组名[数a]+数b)

所以上面程序也可写成这样:

#include "stdio.h"
void main()
{
 int a[3][4]={1,2,3,4,5,6,6,5,4,3,2,1};
 int *p;
 for(p=a[0];p<=a[0]+11;p++)
 {
 	if((p-a[0])%4==0)
 	printf("\n");
 	printf("%d ",*p);
 }   
 printf("\n");
 return 0;
}

 指针变量与二维数组相关函数

知道三名学生的成绩,用函数输出平均分

#include "stdio.h"
void shuchu(float a[3][4],int n);
void main()
{
 float fenshu[3][4]={89,87,98,87,79,76,76,96,53,43,12,99};
 shuchu(fenshu,12);
 return 0;
}
void shuchu(float a[3][4],int n)
{
	float sum=0;
	int i,j;
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			sum=sum+a[i][j];
	printf("%f\n",sum/n);
}

函数声明:数组名[][某数]→*p

函数解释:数组名[i][j]→*(p+i*列数+j)

函数使用:数组名→*数组名

用上述的三条代换后可以得到下面的程序

#include "stdio.h"
void shuchu(float *q,int n);
void main()
{
 float fenshu[3][4]={89,87,98,87,79,76,76,96,53,43,12,99};
 int *p;p=&fenshu[0][0];
 shuchu(p,12);
 return 0;
}
void shuchu(float *q,int n)
{
	float sum=0;
	int i,j;
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			sum=sum+*(q+i);
	printf("%f\n",sum/n);
}

当然,两种程序输出的都一样

六条咸鱼-Wolves-Day4_第3张图片

 

你可能感兴趣的:(c语言,后端)