《(57)--8.5 指针与数组举例.ppt》由会员分享,可在线阅读,更多相关《(57)--8.5 指针与数组举例.ppt(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、8.5 指指针与与数数组举例例指针与数组举例C语言数组元素与变量作实参一样,是数组元素与变量作实参一样,是单向值传递单向值传递,将数组元素,将数组元素的值传递给对应的形参。的值传递给对应的形参。形参和实参各自占有存储空间。因此形参和实参各自占有存储空间。因此形参变实参不变形参变实参不变。数组元素作函数实参数组元素作函数实参数组作函数实参数组作函数实参C语言案例案例1:输入两个等长的数组,分别将相对应位置上的:输入两个等长的数组,分别将相对应位置上的最大值输出。最大值输出。要求:编写函数找出两个值中的最大值并输出;要求:编写函数找出两个值中的最大值并输出;主函数输入两个数组。主函数输入两个数组。
2、数组元素作函数实参,形参为基本变量数组元素作函数实参,形参为基本变量指针与数组举例C语言#include void max(int x,int y);/*函数声明函数声明*/int main()int a10,b10,i;printf(enter array a:n);for(i=0;i10;i+)scanf(%d,&ai);printf(n);printf(enter array b:n);for(i=0;i10;i+)scanf(%d,&bi);/*调用用max函数不断找出两个数函数不断找出两个数组中中对应位置上的最大位置上的最大值*/printf(max:n);for(i=0;i=y)p
3、rintf(%4d,x);else printf(%4d,y);指针与数组举例C语言形参可以是形参可以是数组数组,也可以是,也可以是指针指针。单向值传递,但传递的是单向值传递,但传递的是数组首地址值数组首地址值。形参和实参共用一段存储单元,形参变形参和实参共用一段存储单元,形参变,实参也变实参也变。数组名作函数实参数组名作函数实参数组作函数实参数组作函数实参指针与数组举例C语言案例案例2:采用冒泡法完成:采用冒泡法完成n(0n10)个数由大到小输出。个数由大到小输出。要求:编写函数完成冒泡法排序;要求:编写函数完成冒泡法排序;主函数输入主函数输入n个数,并输出排序后的结果。个数,并输出排序后的
4、结果。数组名作函数实参,形参为数组数组名作函数实参,形参为数组指针与数组举例C语言#include void sort(int b,int n);/*函数声明函数声明*/int main()int a10,i,n;printf(请输入数入数值个数个数 n:n);scanf(%d,&n);printf(“输入排序前的数入排序前的数值:n);for(i=0;in;i+)scanf(%d,&ai);/*调用用sort函数函数对n个数排序个数排序*/sort(a,n);printf(输出排序后的数出排序后的数值:n);for(i=0;in;i+)printf(“%4d”,ai);return 0;/*
5、定定义排序函数,采用冒泡法排序函数,采用冒泡法实现排序排序*/void sort(int b,int n)/*或或void sort(int b10,int n)*/int i,j,t;/*冒泡法排序,每趟排序找出最小数,放到最后冒泡法排序,每趟排序找出最小数,放到最后*/for(i=1;in;i+)for(j=0;jn-i;j+)if(bjbj+1)t=bj;bj=bj+1;bj+1=t;指针与数组举例C语言a0a1a2a3a4a9a数组52074#include void sort(int b,int n);/*函数声明函数声明*/int main()int a10,i,n;printf(
6、请输入数入数值个数个数 n:n);scanf(%d,&n);printf(“输入排序前的数入排序前的数值:n);for(i=0;in;i+)scanf(%d,&ai);/*调用用sort函数函数对n个数排序个数排序*/sort(a,n);printf(输出排序后的数出排序后的数值:n);for(i=0;in;i+)printf(“%4d”,ai);return 0;数数组名作名作实参,参,单向向值传递,传递的是地址的是地址值指针与数组举例C语言/*定定义排序函数,采用冒泡法排序函数,采用冒泡法实现排序排序*/void sort(int b,int n)/*或或void sort(int b10
7、,int n)*/int i,j,t;/*冒泡法排序,每趟排序找出最小数,放到最后冒泡法排序,每趟排序找出最小数,放到最后*/for(i=1;in;i+)for(j=0;jn-i;j+)if(bjbj+1)t=bj;bj=bj+1;bj+1=t;传递的是地址的是地址值,形,形参数参数组和和实参数参数组共共用同一段存用同一段存储单元元a0a1a2a3a4a9a数组52074b0b1b2b3b4b9b数组数组指针与数组举例C语言案例案例3:采用冒泡法完成:采用冒泡法完成n(0n10)个数由大到小输出。个数由大到小输出。要求:编写函数完成冒泡法排序;要求:编写函数完成冒泡法排序;主函数输入主函数输入
8、n个数,并输出排序后的结果。个数,并输出排序后的结果。数组名作函数实参,形参为指针数组名作函数实参,形参为指针指针与数组举例C语言#include void sort(int b,int n);/*函数声明函数声明*/int main()int a10,i,n;printf(请输入数入数值个数个数 n:n);scanf(%d,&n);printf(“输入排序前的数入排序前的数值:n);for(i=0;in;i+)scanf(%d,&ai);/*调用用sort函数函数对n个数排序个数排序*/sort(a,n);printf(输出排序后的数出排序后的数值:n);for(i=0;in;i+)prin
9、tf(“%4d”,ai);return 0;/*定定义排序函数,采用冒泡法排序函数,采用冒泡法实现排序排序*/void sort(int*p,int n)int i,j,t;/*冒泡法排序,每趟排序找出最小数,放到最后冒泡法排序,每趟排序找出最小数,放到最后*/for(i=1;in;i+)for(j=0;jn-i;j+)if(pjpj+1)t=pj;pj=pj+1;pj+1=t;数数组名作名作实参,参,单向向值传递,传递的是地址的是地址值指针与数组举例C语言/*定定义排序函数,采用冒泡法排序函数,采用冒泡法实现排序排序*/void sort(int*p,int n)int i,j,t;/*冒泡法排序,每趟排序找出最小数,放到最后冒泡法排序,每趟排序找出最小数,放到最后*/for(i=1;in;i+)for(j=0;jn-i;j+)if(pjpj+1)t=pj;pj=pj+1;pj+1=t;传递的是地址的是地址值,p指指向第一个元素向第一个元素a0a1a2a3a4a9a数组52074p0p1p2p3p4p9p指针与数组举例指针与数组举例数组做函数参数数组元素作实参,形参是基本变量单向值传递,传递的是数组元素的值数组名作实参,形参是数组或指针单向值传递,传递的是数组首地址值