任務和**:
/*
*檔名稱:main.c
完成日期:2017.10.11
*版本號:v2.
* *問題描述:認真分析下面的**,掌握函式引數傳遞中
指標,位址,值的變化規律
*/
#includevoid fun(int *a, int *b, int *c)
int main()
執行結果:
分析過程:
p1=&a; 指標p1指向a=5這個值的位址 經過函式fun(p1,p2,p3)的內部運算,得到變數a,b,c的值
函式的引數傳遞是按址傳遞的,位址裡面的值發生變化才能傳遞到主函式中
子函式 fun()經過第一次交換,使得值為a的位址a變成了位址b,值為b的位址b變成了位址a
可見,子函式中位址的交換不能改變主函式中對應的位址值
由於b=temp;即b與temp代表了同乙個位址,同乙個位址裡面的值當然一樣,故*temp=*b;多餘
*b=*c;是一條賦值語句,即將位址c中的值賦值給位址b
而位址c中的值就是p3指向的值c(3),由於值為b的位址b變成了位址a
故位址a也即p1指向的變數a=3
*c=*temp;也即*b=*temp;故也是多餘的
再將變數c的值賦值給變數a,此時變數a的位址是位址b。
(即函式傳參是按址傳遞並通過改變所指向位址中的變數值進行的)
#includevoid exchange(int *,int *,int *);
void myswap(int *,int *);
int main( )
void exchange(int *q1,int *q2,int *q3)
void myswap(int *pt1, int *pt2)
C語言提高 第5講 函式的引數 回文 素數
任務和 檔名稱 main.c 完成日期 2017.10.10 版本號 v2.問題描述 編制乙個函式reverse,返回給定資料的 反序數 問題輸出 例如輸入1234,輸出4321。請編制reverse函式,實現要求的功能。include int reverse int int main int re...
C語言中引數的傳遞方式
c語言中引數的傳遞方式一般存在兩種方式 一種是通過棧的形式傳遞,另一種是通過暫存器的方式傳遞的。這次,我們只是詳細描述一下第一種引數傳遞方式,另外一種方式在這裡不做詳細介紹。首先,我們看一下,下面乙個簡單的呼叫例程 int add int a,int b,int c void main 借助以上例程...
C語言中函式引數傳遞的方式 值傳遞,位址傳遞
值傳遞 將實參的值複製至形參的相應儲存單元中,實參與形參占用不同儲存單元,單向傳遞 即指向實參的儲存單元,形參和實參占用相同的儲存單元 引用傳遞 c 中主要內容 1 c語言中位址傳遞實參的方法 2 多函式巢狀傳遞實參的方法,二維指標 3 陣列作為函式引數,而不改變陣列的值,可以複製陣列內容再進行修改...