c語言中值傳遞的本質是,當呼叫被調函式時,被調函式會在自己的函式棧中開闢相同型別的形參空間,並且將傳遞過來的值寫入形參空間儲存。
傳遞位址和普通傳參沒有本質的區別。傳遞位址和普通傳參都是值傳遞,實參是數值,也可以是變數。
數值沒有普通值傳遞,因為普通值傳遞需要的形參空間大,效率低,所以只有位址傳遞。
四種傳參形式:
(1)成員值傳遞
就是普通值傳遞;
(2)成員位址傳遞
就是位址傳遞;
(3)傳遞整個結構體
將整個結構體視為乙個普通值進行傳遞,形參需要開闢同等大小的結構體空間,用於存放傳遞過來的結構體內容;
(4)結構體的位址傳遞
函式指標其實就是乙個普通變數,這個普通變數的型別是函式指標變數型別,它的值就是某個函式的位址(也就是它的函式名這個符號在編譯器中對應的值)。
#include int add (int a, int b);
int sub (int a, int b);
int multiply (int a, int b);
int divide (int a, int b);
//定義乙個型別pfunc,這個函式指標型別指向一種特定引數列表和返回值的函式
typedef int (*pfunc)(int, int);
int main(void)
while (c == '\n');
//加一句除錯
//printf("a = %d, b = %d, c =%d.\n",a , b, c)
switch (c)
result = p1 (a,b);
printf("%d %c %d = %d.\n", a , c ,b, result);
return 0;
}int add(int a ,int b)
int sub(int a ,int b)
int multiply(int a, int b)
int divide(int a ,int b )
指標及其應用3 指標與函式
指標作為函式引數指標可以作為函式的引數。在函式章節中,我們把數字作為引數傳入函式中,實際上就 是利用了傳遞指標 即傳遞陣列的首位址 的方法。通過首位址,我們可以訪問陣列中的任 何乙個元素。對於指向其他型別變數的指標,我們可以用同樣的方式處理。例如,我們編寫如下乙個函式,用於將兩個整型變數的值交換。v...
5 2指標與函式變元
由於c語言以按值呼叫的方式將變元傳遞給函式,因而被呼叫函式不能直接更改呼叫函式中的變數的值。例如下面的swap函式就是錯誤的 swap a,b void swap int x,int y 錯誤的函式定義 由於按值呼叫,上swap函式將不會影響呼叫它的程式中的變元的值,只交換臨時變數區中的對應的臨時拷...
C語言(九) 指標(3)指標與const
表示一旦得到了某個變數的位址,不能再指向其他變數 int i 0 int const q i q是 const q 20 ok q error表示不能通過指標去修改這個變數 int i 0 int j const int p i const int p 等同於 int const p p 20 er...