C语言程序设计(第三版)-谭浩强解说.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4 实参为指针变量,形参为数组名。如: void main() void f(int x[ ],int n) {int a[10],*p a; ┇ ┇ f(p,10); } #include void main() void inv(int *x,int n); int i,arr[10],*p=arr; printf(″The original array:\n ″); for(i=0;i<10;i++,p++)  scanf(″%d″,p);  printf(″\n″); p=arr; inv(p,10); /* 实参为指针变量 */ printf(″The array has been inverted :\n″); for(p=arr;p<arr+10;p++ ) printf(″%d″,*p); printf(″\n″);   } void inv(int *x,int n) {intp,m,temp,*i,*j;  m=(n-1)/2; i=x;j=x+n-1;p=x+m;  for(;i<=p;i++,j--) {temp=*i;*i=*j;*j=temp;}  return; } 例10.9 用选择法对10个整数按由大到小顺序排序 #include void main() void sort(int x[ ],int n); int*p,i,a[10]; p=a; for(i=0;i<10;i++) scanf(″%d″,p++); p=a; sort(p,10); for(p=a,i=0;i<10;i++) {printf(″%d″,*p);p++;} } void sort(int x[ ],int n) { int i,j,k,t; for(i=0;i<n-1;i++)  {k=i;   for(j=i+1;j<n;j++)   if(x[j]>x[k]) k=j; if(k!=i)   {t=x[i]; x[i]=x[k]; x[k]=t;} } } 2 *&a的含义是什么?先进行&a运算,得a的地址,再进行*运算。即&a所指向的变量,也就是变量a。*&a和*pointer_1的作用是一样的,它们都等价于变量a。即*&a与a等价。 3 (*pointer_1)++相当于a++。注意括号是必要的,如果没有括号,就成为了*pointer_1++,从附录可知:++和*为同一优先级别,而结合方向为自右而左,因此它相当于* pointer_1++ 。由于++在pointer_1的右侧,是“后加”,因此先对pointer_1的原值进行*运算,得到a的值,然后使pointer_1的值改变,这样pointer_1不再指向a了。 例10 . 2 输入a和b两个整数,按先大后小的顺序输出 a和b。 #include void main() { int *p1,*p2,*p,a,b;   scanf(″%d,%d″,&a,&b);  p1=&a;p2=&b;   if(a<b)  {p=p1;p1=p2;p2=p;}  printf(″a %d,b %d\n\n″,a,b); printf(″max %d,min %d\n″,*p1,*p2); } 运行情况如下: 5,9↙ a=5,b=9 max=9,min=5 当输入a=5,b=9时,由于a<b,将p1和p2交换。交换前的情况见图(a),交换后见图(b)。 10.2.3 指针变量作为函数参数 例10 . 3 对输入的两个整数按大小顺序输出 #include void main() {void swap(int *p1,int *p2);  int a,b;  int *pointer_1,*pointer_2; scanf(″%d,%d″,&a,&b);  pointer_1 =&a; pointer_2 =&b;   if(a<b= swap( pointer_1 , pointer_2 );  printf(″\n%d,%d\n″,a,b);   } void swap(int *p1,int *p2) { int temp; temp=*p1; *p1=*p2; *p2=temp; } 例10.4 输入a、b、c 3个整数,按大小顺序输出 #include void main() { void exchange(int *q1, int *q2, int *q3);   int a,b,c,*p1,*p2,*p3;   scanf(″%d,%d,%d″,a, b, c);  p1=&a;

文档评论(0)

a336661148 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档