5 指標與函式

2021-09-01 20:59:41 字數 1038 閱讀 2591

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...