形參的改變無法影響到實參,是我開始以為的。后來發現用指針變量可以改變實參。#include#includevoidfun(int*a,int*b){int*c;c=a;a=b;b=c;}voidfun1(int*a,int*b){int*c;*c=*a;*a=*b;*b=*c;}intmain(){intx=3,y=5,*p=&x,*q=&y,*k=&x,*z=&y;fun(p,q);printf("%d,%d\n",*p,*q);fun1(k,z);printf("%d,%d\n",*k,*z);//fun(&x,&y);printf("%d,%d\n",*p,*q);return0;}這段代碼輸出3,53,3;首先我認為,在main()中,p,q獲得了整形x,y的地址。進入fun()函數后,a,b,c交換的a,b的地址應該p,q的地址也要變化,因此我錯誤的認為輸出5,3至于進入fun1()函數后,是指針變量的值互換應該不會改變我錯誤的認為應該輸出3,5.請您幫我指導下,詳細點。否則我可能不懂。謝謝您
關于形參和實參,改變實參問題
慕勒3428872
2019-05-22 16:47:09