C語言函式引數的傳值和傳址呼叫

2021-08-14 15:15:08 字數 1176 閱讀 2108

大家都知道,c語言一般的引數都是傳值呼叫的,但有時候也有例外,下面就分析一下什麼時候傳值呼叫,什麼時候傳址呼叫。

標量引數都是傳值呼叫,不會對標量產生任何影響

#include void add_one(int value) 

int main(int argc, char const *argv)

執行結果:

傳值前value=10

傳值後value=10

process returned 0 (0x0) execution time : 0.110 s

press any key to continue.

陣列和指標引數是傳址呼叫,相當於傳遞了乙個包含引數位址的指標,在函式中對陣列或指標的任何操作會間接的改變陣列和指標的本身

#include #define  size   4

void clr_nums(int nums, int size)

}void clr_string(int *string)

int main(int argc, char const *argv) ;

int *string = "hello";

int i;

printf("傳址前\n");

printf("nums= ");

for (i = 0; i < size; i++)

printf("string=%s\n", string);

clr_nums(nums, size);

clr_string(&string);

printf("傳址後\n");

printf("nums= ");

for (i = 0; i < size; i++)

printf("string=%s\n", string);

return 0;

}

執行結果:

傳址前

nums= 1 2 3 4 string=hello

傳址後nums= 0 0 0 0 string=

process returned 0 (0x0) execution time : 0.111 s

press any key to continue.

函式的傳值和傳址呼叫(C語言)

1 傳值呼叫。傳值呼叫顧名思義就是將引數的值傳遞給函式,而函式在進行呼叫時會複製這個值,然後將複製的值在函式中進行呼叫。void swap int a,int b int temp temp a a b b temp int main void int x 1,y 2 swap x,y printf...

函式呼叫的傳值和「傳址」

函式呼叫的傳值和 傳址 以下文字只想說明乙個問題 所有的引數傳遞都是傳值 要想通過函式改變乙個變數的值,只有將此變數的位址傳入函式。其實c語言中根本沒有傳址這一 說,所有的函式在傳遞引數時都是採用的傳值呼叫,即在呼叫時完成 實參對形參的賦值,也就是說在傳遞引數時永遠都是將實參的值傳遞給形參。形參是乙...

函式引數的傳值和傳址

函式呼叫引數傳值和傳址的區別 傳值 把引數拷貝乙個副本,然後傳遞給函式體進行操作。但是對引數的操作不會影響到函式外的引數,範圍僅在當前的函式內有效。1 void compare int a,int b 兩個引數大小的比較 1 void copy int des,int sou 將引數sou拷貝到引數...