#include<stdio.h> void fun(int*a,int*b) {int*c; c=a;a=b;b=c;} main() {int x=3,y=5,*p=&x,*q=&y;

日期:2011-03-26 02:05:39 人气:1

#include<stdio.h> void fun(int*a,int*b) {int*c; c=a;a=b;b=c;} main() {int x=3,y=5,*p=&x,*q=&y;

这个程序的结果是:3,5,3,5 我帮你“缕缕”吧。调用fun函数时,是将p和q的值(x和y的地址)传给了a和b。注意,这里p的值和q的值传递过去了,p和q的值会变吗?不会。所以p和q仍然分别指向x和y。再回到fun函数中,可以看出,a和b的值(x和y的地址)是交换了,也即是说a原本指向x,现在指向了y,对应的b改为指向x。但这只能说a和b间有变化。会影响到x和y吗?也不会。所以fun函数其实对x,y,p,q没有产生任何的影响,当然结果就应该是3,5,3,5了。希望你看过之后可以理解清楚。
    A+
热门评论