c語言函式傳參

2021-08-20 05:46:22 字數 1066 閱讀 3577

引入:

不過對於函式的引數呼叫時常會出現問題。

#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翻轉二叉樹 時發現三種傳參方式自己並沒有完全弄清,在以樹指標為物件時,就出現錯誤。網上有三種常見的交換變數的方式,第一種建立臨時變數儲存其...