看教程时有点疑问.. 代码一.
代码:
#include <stdio.h>
main() { int a,b; int *point_1,*point_2,*temp_point; scanf("%d,%d",&a,&b); point_1=&a; point_2=&b; if (a<b) { temp_point=point_1; point_1=point_2; point_2=temp_point; } printf("%d,%d",*point_1,*point_2); }
此法并没有改变变量a,b的值只是利用指针变量分别存储a和b的地址,然后再把那两个指针变量的值对换一下其实就是存储在指针变量里面a与b的地址对换,在利用*point_1和*point_2的方式把调换后的值显示出来这里的*point_1实际就是a,此中算法并非真的改变a,b的值,而是利用指针进行地址交换达到大小排序的目的.
代码二
代码:
#include <stdio.h>
main() { int a,b; int *point_1,*point_2; scanf("%d,%d",&a,&b); point_1 = &a; point_2 = &b; compositor(point_1,point_2); printf("%d,%d",a,b); }
static compositor(p1,p2) int *p1,*p2; { int temp; if (*p1<*p2) { temp = *p1; *p1 = *p2; *p2 = temp; } }
此题与上题不同的是,直接改变了a于b的值达到真实改变的目的
第一段代码不会改变a,b的值.第二段怎么就会改变了???TNND真头痛.我看起来两段代码基本没有多少区别..
|