- 1、本文档共180页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[IT认证]C语言程序设计课件
swap(pt1,pt2) int *pt1,*pt2; {int p; p=*pt1; *pt1=*pt2; *pt2=p; } exchange(q1,q2,q3) int *q1,*q2,*q3; {if (*q1*q2) swap(q1,q2); if (*q1*q3) swap(q1,q3); if (*q2*q3) swap(q2,q3); } main() {int a,b,c,*p1,*p2,*p3; scanf(%d,%d,%d,a,b,c); p1=a;p2=b;p3=c; exchange(p1,p2,p3); printf(\n%d,%d,%d\n,a,b,c); } 输入:9,0,10 输出:10,9,0 [例4]:3个整数大到小排序 3.2 通过指针引用数组元素 C语言规定,p+1指向数组的下一个元素。地址增加多少字节则依据数组元素的类型而定。 若p=a[0],则: 1)p+i和a+i都是a[i]的地址; 2)*( p+i)或*(a+i)就是p+i或a+i指向的数组元素a[i]; 3)指向数组的指针变量也可以带下标,如:p[i]与*(p+i)等价。 因此,要引用一个数组元素,可以用 下标法:a[i] 指针法: *(p+i)或*(a+i) 下标法输出数组元素 main() {int a[10]; int i; for (i=0;i10;i++) scanf(%d,a[i]); printf(\n); for (i=0;i10;i++) printf(%d ,a[i]); printf(\n); } main() {int a[10]; int i; for (i=0;i10;i++) scanf(%d,a[i]); printf(\n); for (i=0;i10;i++) printf(%d ,*(a+i)); printf(\n); } 用数组名输出数组元素 以上两种方法程序执行效率相同,直观。 指针法执行效率高,不直观。 [例5c]:指针法输出数组元素 main() {int a[10]; int *p,i; for (i=0;i10;i++) scanf(%d,a[i]); printf(\n); for (p=a;p(a+10);p++) printf(%d ,*p); printf(\n); } 使用指针变量时注意 1 指针变量可以使本身的值改变,如p++等,而a的值不变。 2 要注意指针变量的当前值。 3 必须定义数组的长度。(因为指针变量可以指到数组以后的内存单元。 [例6]:注意指针当前指向 main() {int *p,i,a[10]; p=a; for (i=0;i10;i++) scanf(%d,p++); printf(\n); p=a; for (i=0;i10;i++,p++) printf(%d ,*p); printf(\n); } 4 注意指针变量的运算。 若先使p指向数组a,即p=a;,则: 1)p++(或p+=1),p指向下一元素即a[1]; 2)*p++,等价于*(p++)。先得到p指向的变量的值(即*p),然后再使p+1 p。 3)*(p++)先取*p的值,后使p 值加1; *(++p)先使p的加1,再取*p。 4)(*p)++等价于(a[0])++,表示p所指向的元素值加1。 5)若p当前指向a数组中第i个元素,则: *(p--)相当于a[i--],先取p值作“*”运算,再使p自减。 *(++p)相当于a[++i],先使p自加,再作“*”运算。 *(--p)相当于a[--i],先使p自减,再作“*”运算。 使用时特别注意:++、--和*的优先级相同,结合方向为自右而左。 [例7a]:循环处理 void inv(x,n) int x[],n; {int t,i,j,m=(n-1)/2; for (i=0;i=m;i++) {j=n-1-i; t=x[i]; x[i]=x[j]; x[j]=t; } return; } main() {static int i,a[10]={3,7,9,11,0,6,7,5,4,2}; printf(The original array:\n); for (i=0;i10;i++) printf(%d,,a[i]); printf(\n)
文档评论(0)