正在加载图片...
【例2】输入a和b两个整数,按从小到大的顺序输出 强调变量 scanf("%d%d"pl, p2); if(°pl>市p2) 作用 printf("\n min=%d, max=%d", a, b) 【例3】用数组名法从键盘接收并输出数组元素 int a[ 10), i 数组名法 for(i=0;i<10;i++) 也即位移 scanf("%d", a+i) for(i=0;i<10;++;) printf("%4d",*(a+i)) 【例4】用指针变量法从键盘接收并输出数组元素 int a[ 101, i,p 与数组名 for(p=a p<a+10 p++) 法对比说 scanf(%ad”p) for(p=a p<a+ 10 printf("%4d 在例3中,是通过数组名来访问数组元素的,这种方法可以称为数 组名法。实际上它与下标法没有什么不同,只是书写上有区别而己 而在例4中,是通过指针变量来访问数组元素的,这种方法可以称 为指针变量法。在例74中,由于在接收数组元素的过程中,使用 了p+,每循环一次指针变量p的指向向下移动一个元素,所以在 第一个for循环结束时,p已指向最后一个元素a[9]的下一个存储单 元,因而在第二个循环开始时,指针变量p必须重新赋值,使p指 向数组的第一个元素,即p=a或p=&a0]。而在第二个for循环中 使用了*p++。由于++与*优先级相同,结合方向为自右至左,因此 它等价于*(p++),其作用是先取p所指向变量的值,然后再执行 p=p+1。与前面介绍的(*p)++的作用有本质区别。而表达式*+p), 是先执行p=p+1,而后再引用p所指变量的内容。【例 2】 输入 a 和 b 两个整数,按从小到大的顺序输出。 main() { int *p1, *p2,a,b,temp; p1=&a;p2=&b; scanf("%d%d",p1,p2); if(*p1>*p2) { temp=*p1; *p1=*p2; *p2=temp; } printf("\n min=%d,max=%d",a,b); } 【例 3】 用数组名法从键盘接收并输出数组元素。 main() { int a[10],i; for(i=0;i<10;i++) scanf("%d",a+i); for(i=0;i<10;i++;) printf("%4d", * (a+i)); } 【例 4】 用指针变量法从键盘接收并输出数组元素。 main() { int a[10],i, *p; for(p=a;p<a+10;p++) scanf(“%d”,p); for(p=a;p<a+10;) printf("%4d", *p++); } 在例 3 中,是通过数组名来访问数组元素的,这种方法可以称为数 组名法。实际上它与下标法没有什么不同,只是书写上有区别而已。 而在例 4 中,是通过指针变量来访问数组元素的,这种方法可以称 为指针变量法。在例 7.4 中,由于在接收数组元素的过程中,使用 了 p++,每循环一次指针变量 p 的指向向下移动一个元素,所以在 第一个 for 循环结束时,p 已指向最后一个元素 a[9]的下一个存储单 元,因而在第二个循环开始时,指针变量 p 必须重新赋值,使 p 指 向数组的第一个元素,即 p=a 或 p=&a[0]。而在第二个 for 循环中, 使用了*p++。由于++与*优先级相同,结合方向为自右至左,因此 它等价于*(p++),其作用是先取 p 所指向变量的值,然后再执行 p=p+1。与前面介绍的(*p)++的作用有本质区别。而表达式 *(++p), 是先执行 p=p+1,而后再引用 p 所指变量的内容。 强调变量 temp 的 作用 数组名法 也即位移 法 与数组名 法对比说 明
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有