c語言函式引數列表中引數加取址符呼叫傳位址反而會報錯

2021-04-19 08:29:19 字數 1033 閱讀 7141

1樓:金色潛鳥

c 語言函bai

數 形參 列表 中 可以是du普通變數 或指標變數,不允zhi許 加取址符。

c++ 語言函dao數 形參專 列表 中 加取址符屬 的引數 叫 「引用」,c 不支援。

------

函式 呼叫 的實參 型別 要與 形參對應,只有 形參 為 指標變數 的 實參 才可以是 位址。

void f(int x, int *y){};

int a,b;

int *p;

p=&a;

呼叫 可以是 f(b,&a);

可以是 f(b,p);

不可以是 f(b,a);

不可以是 f(&b,a);

不可以是 f(&b,&a);

不可以是 f(b,&p);

不可以是 f(&b,p);

不可以是 f(&b,&p);

(但願回答不被封。)

c語言函式呼叫引數傳遞的是什麼

2樓:匿名使用者

c語言傳遞的是值而不是位址,這一點從vb轉過來的程式設計師一定要注意。否則不經意間就會犯錯誤。另外下層函式修改上層函式變數不是一種好習慣,容易引發錯誤。

c語言中函式可以返回乙個函式值,如果你需要返回多個函式值可以用下面的形式

fun(int *a, int *b)

main()

如果按vb的習慣,

fun(int a, int b)

main()

是錯誤的,main中的a,b和fun中的a,b完全是兩碼事,結果就是調運fun沒有任何效果。

3樓:

分兩種,一種是按值傳遞,一種是按位址傳遞,

按值傳遞就是在子函式中開闢出乙個臨時記憶體空間,將傳遞的數值儲存在這個空間中,當子函式結束後,這個記憶體空間就會釋放了!

按位址傳遞則是把主函式開闢的某個記憶體空間首位址傳遞給子函式,子函式可以直接讀寫主函式上這段記憶體空間,當子函式結束後,這部分空間不會被釋放,主函式將繼續使用這段空間!

C語言關於函式傳遞引數問題

好久沒接觸過c了,有些忘了,講講我的理解。int a 10 表示a是乙個指向 int 指標的陣列,它和a 10 10 是一樣的,而和int a中的a性質是一樣的,都是指向int 的指標,但有點區別 int a 10 中 a 位址向前移動10位而int a 中的a 位址移動一位。所以我的結論是 voi...

c語言帶引數函式的原型宣告,c語言中函式原型宣告部分是什麼意思

void show n char char,int 如果是在c 是合法的,char,int 是友元,表示只有引數型別無引數變數名,但在c 語言中這樣寫不規範,要寫成 void show n char char ch,int a 此處為形參,實際使用中要用實際引數傳入。如 呼叫該函式時,傳入實參 sh...

c語言中如何獲取函式可變引數的個數

需要借用c語言的va list 巨集定義,及相關操作來實現可變引數。va list 所在標頭檔案 include 用法如下 1 首先在函式裡定義一具va list型的變數,這個變數是指向引數的指標 2 然後用va start巨集初始化剛定義的va list變數 3 然後用va arg返回可變的引數,...