引入:
不過對於函式的引數呼叫時常會出現問題。
#include
int p(int a)
int main(void)
這裡的自定義函式p,接收乙個int型別的引數,並定義為a。
雖然自定義函式和主函式的變數名,都為a,但是這裡的a是兩個變數。
雖然函式也將a返回了,但是主函式並沒有接收,忽略了p的返回值。
所以主函式的a依然是10
#include
void p(int *w)
int main(void)
這裡的自定義函式p,接收乙個int型別的指標,命名為w。
雖然這裡的指標w,和主函式的指標s,名稱不一樣,但是他們兩個都指向了記憶體中a的位址。
通過指標的解引用,在記憶體中修改相關數值。
主函式再次訪問a時,就已經是修改過的值,即使自定義函式沒有返回值,a的值已經改變。
所以主函式的列印的結果為20
#include
int *creat(void)
int main(void)
上面的程式執行時會出現錯誤,因為自定函式中建立的引數,儲存期只有自定義函式執行的這段時間,當自定義函式結束後,自定義函式中宣告的變數會被釋放。自定義函式返回的指標所指向的位址也就沒有意義了。這是用主函式解引用指標會出現錯誤。
#include
void pass(char *pa)
int main(void)
上面程式,自定義函式雖然沒有返回值,但主函式中list被無意間修改了。
這是由於字串是以指標傳入函式,自定義函式是在原始位址上進行修改。
主函式再次訪問就會出現修改過的結果。
修改後的**:
#include
#include
void pass(char *pa)
int main(void)
c 函式傳參 和 c 函式傳參的區別
先看c 的 public static void getfilename streamwriter sw,string path,int indent,listlistfile listlistfile new list filehandle.getfilename sw,facepic,2,lis...
C語言函式傳參問題(實參形參問題)
c語言中函式是必不可少的,所以傳參問題必須要懂,實際運用的時候也會很方便 函式的形參在函式被呼叫的時候才會被分配位址空間的,而且使用後會被收回的。這個是很簡單的,就是平常最常見的,呼叫函式時,形參被分配空間,同時將實參的數值賦值乙份給形參空間 如果是表示式的話,就計算後再給形參 然後形參的生死改變就...
c 函式的傳參
在闡述c 中函式傳參之前,先說明一下為何寫這篇部落格。事實上,c 的傳參方式的討論已經很多,但是在解劍指 offer 27.二叉樹的映象 leetcode 226翻轉二叉樹 時發現三種傳參方式自己並沒有完全弄清,在以樹指標為物件時,就出現錯誤。網上有三種常見的交換變數的方式,第一種建立臨時變數儲存其...