资源描述:
《指向多维数组的指针变量》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2.指向多维数组的指针变量1)指向数组元素的指针变量(见例10.11)2)指向由m个元素组成的一维数组的指针变量类型说明符(*指针变量名)[长度]int(*p)[4]而p+i(a+i)则指向一维数组a[i]或*(a+i),*(p+i)+j是二维数组i行j列的元素的地址,而*(*(p+i)+j)则是i行j列元素的值。中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示二维数组分解为多个一维数组时,一维数组的长度,也就是二维组的列数。应注意“(*指针变量名)”两边的括号不可少,如缺少括号则表示是
2、指针数组,意义就完全不同了。、pp+1p+2p是一个指针变量,它指向包含4个元素的一维数组。例10.11用指针变量输出二维数组元素的值(1)指向数组元素的指针变量#includevoidmain(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int*p;for(p=a[0];p<a[0]+12;p++){if((p-a[0])%4==0)printf(″\n″);printf(″%4d″,*p);}}运行结果如下:13579111315192123若int
3、a[3][4];则int(*p1)[4]=a;—指向行(0行)行指针int*p2=a[0];—指向元素(0行0列)列指针int*p3=*a;—指向元素(0行0列)列指针(2)指向由m个元素组成的一维数组的指针变量例10.12输出二维数组任一行任一列元素的值#includevoidmain(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(*p)[4],i,j;p=a;scanf(″i=%d,j=%d″,&i,&j);printf(″a[%d,%d]=%d
4、″,i,j,*(*(p+i)+j));}运行情况如下:i=1,j=2↙(本行为键盘输入)a[1,2]=133.用指向数组的指针作函数参数例10.13有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。这个题目是很简单的。只是为了说明用指向数组的指针作函数参数而举的例子。用函数average求总平均成绩;用函数search找出并输出第i个学生的成绩。例:3个学生各学4门课,计算总平均分,并输出第n个学生成绩voidmain(){voidaverage(float*p,intn);voidsearch(
5、float(*p)[4],intn);floatscore[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}};average(*score,12);search(score,2);}voidaverage(float*p,intn){float*p_end,sum=0,aver;p_end=p+n-1;for(;p<=p_end;p++)sum=sum+(*p);aver=sum/n;printf("average=%5.2f",aver);}voidsearch(
6、float(*p)[4],intn){inti;printf("No.%d:",n);for(i=0;i<4;i++)printf("%5.2f",*(*(p+n)+i));}列指针行指针函数说明floatp[][4]6567706080879081909910098ppp[n][i]程序运行结果如下:average=82.25ThescoreofNo.2are:90.00 99.00 100.00 98.00例3个学生各学4门课,计算总平均分,并查找一门以上课不及格学生,输出其各门课成绩voidsearch(fl
7、oat(*p)[4],intn){inti,j,flag;for(j=0;j8、{...},{...},{...}};search(score,3);}6552796080879081909910098pp[j][i]略在C语言中,可以用两种方法访问一个字符串。1)用字符数组存放一个字符串,然后输出该字符串【例10.15】#includevoidmain(){charstri