用指標做函式引數的好處,

2021-10-08 16:24:51 字數 681 閱讀 1425

用指標做函式引數的好處,

首先要理解函式傳參的過程,函式傳參是複製型的,例如

void modify(int a)

a++;

void main()

int a=5;

modify(a);

printf("%d",a);

程式執行完之後,a的值還是5,為什麼呢,因為在執行modify函式的時候,是另外開闢了儲存空間,將a的值複製過去,然後modify函式所進行的所有操作都是針對這個新開闢的空間而言的,因此程式執行完之後,a的值並沒有發生改變,

如果我們用指標去傳遞引數,那麼久完全不一樣了,

void modify(int * a)

(*a)++;

void main()

int a=5;

modify(&a);

printf("%d",a);

程式的執行結果當然是6,因為你傳遞的是a的位址,所以modify函式都是對a位址上面的內容進行操作,用指標作為函式引數的時候,在引數傳遞的時候其實也是另外開闢了乙個儲存空間,然後把指標的值複製過去,然後函式對新開闢的這個儲存空間裡面的這個指標變數進行操作。

什麼時候用指標,什麼時候用普通的拷貝的方式傳遞引數,當傳遞的引數是乙個結構體,而這個結構體比較大,這個時候最好用指標,如果用拷貝的話,單單花在拷貝的時間就要浪費很多,

用函式指標變數做函式的引數

有些時候我們無法及時確定函式的處理邏輯,程式需要動態的改變,這時我們可以通過定義函式指標來實現。舉個 我們有加法,乘法兩個函式,如果還要乙個除法我們怎麼做,可能我們會想到,這好辦,建立乙個除法的函式,分分鐘搞定。如果客戶還要變怎麼辦?資料還是那些資料,只是函式的功能改變了。那有點太麻煩了。我們定義乙...

C程式設計 指標 用指向函式的指標做函式引數

題目 有兩個整數,輸入a和b。使用者輸入1 3,當輸入1時,給出a和b中的最大值,當輸入2時,給出最小值,當輸入3時,給出和。用指向函式的指標做函式引數 include void main intfun int x,int y,int p int,int int max int x,int y in...

指標做函式引數

程式1 void main void mymalloc char s 我想在函式中分配記憶體,再返回 mymalloc p 的執行過程 分配乙個臨時變數char s,s的值等於p,也就是null,但是s占用的是與p不同的記憶體空間。此後函式的執行與p一點關係都沒有了!只是用p的值來初始化s。然後s ...