网站推广新手入门教程,百度seoo优化软件,软文推广多少钱一篇,微信网站在线登录网页版最近一次的考试都是指针#xff0c;真是给我深深上了一课#xff0c;所以我特此复习一下指针方面的知识。二维数组的指针
int a[3][4] {{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 下面通过一个表来做详细的说明#xff1a; 访问二维数组#xff0c;有两种方法#xff0c;一…
最近一次的考试都是指针真是给我深深上了一课所以我特此复习一下指针方面的知识。二维数组的指针
int a[3][4] {{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 下面通过一个表来做详细的说明 访问二维数组有两种方法一种是当成一维数组二是按照二维数组的方式
我们通过几个例子看看
例1.
#includestdio.h
int main ()
{int a[3][4]{1,3,5,7,9,11,15,13,17,19,21,23};int *p;for (pa[0];pa[0]12;p){printf(%4d\n,*p);}
return 0;
}
上面p是一个int指针初始赋予a[0]指向0行0列的元素而后开始遍历这里实际上利用了二维数组的一个重要的性质它的所有元素是连续存储的。例2. #includestdio.h
int main ()
{int a[3][4]{1,3,5,7,9,11,15,13,17,19,21,23};int (*p)[4];pa;int i1,j2;printf(a[%d,%d]%d\n,i,j,*(*(pi)j));return 0;}
这里p指向一个由4个int元素组成的数组pa于是p与a一模一样了。 例3.二维数组的传递
有一个班3个学生各学4门课计算总平均分数及第n个学生的成绩 #includestdio.h
int main ()
{void average(float *p,int n);void search(float (*p)[4],int n);float score[3][4]{{65,67,70,60},{80,87,90,81},{90,99,100,98}};average(*score,12);search(score,2);return 0;
}
void average(float *p,int n)
{float * p_end;float sum0,aver;p_endpn-1;for (;pp_end;p){sum(*p);}aversum/n;printf(average%5.2f\n,aver);
}
void search(float (*p)[4],int n)
{int i;printf(the score of No. %d are:\n,n);for (i0;i4;i){printf(%5.2f\t,*(*(pn)i));}
}这个例子形象地讲述了如何传递二维数组既可以当成一位数组传递也可以当成二维数组传递