www.fltk.net > #inCluDE <stDio.h> voiD Fun(int*A, int*

#inCluDE <stDio.h> voiD Fun(int*A, int*

调用fun(p,q)时就是让a指向p指的地方,b指向q指的地方,函数内部是让c指向a指的地方,让a指向b指的地方,再让b指向c指的地方,你发现这里面没有改变p和q原来指向的地方,即p还是指向x,q还是指向y.fun(&x,&y)是让a指向x,b指向y,你会发现这根本没涉及到p和q的指向,更谈不上改变它们的指向,所以答案选B啊.

#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; fun(p,q); printf("%d,",*p,*q); fun(&x,&y); printf("%d,%d\n",*p,*q); return 0; }

#include<stdio.h> void show (int *( * fun)(int [], int), int a[], int n) { fun(a,n); } int * pfun (int a[], int n) { int i = 0; for( ; i < n; i++) printf("%d\t",a[i]); } int main() { int *p; int a[10]={0,1,2,3,4,5,6,7,8,9}; int n = 10; show(pfun,a,n); return 0; }

这个程序的结果是: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了.希望你看过之后可以理解清楚.

运行结果是“623451”fun(&x[0],&x[5]); 这里传入1和6的地址,然后在fun里面对其地址所指向的内容进行交换操作.

#include<stdio.h>#include <stdlib.h>void fun(int a, int b, int c){ c = a * a + b * b;}int main(){ int x = 22; fun(4, 2, x); printf("%d\n", x); system("pause"); return 0;}0 错误,编译完全成功,具体的你可以在吧下面那个输出框贴出来(点击我头像,有惊喜)

相关搜索:

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com