C語言的傳值與傳址調用


 

 C語言的傳值與傳址調用

傳值調用並不能改變兩個變量的值,而傳址能。

為什么,因為,傳值調用,僅僅是在函數內,調換參數的值。

而地址所指向的值,改變的不僅僅是函數內,函數外也改變。

請看代碼:

這里還要注意:通常我們不會返回局部變量的地址.

復制代碼
 1 #include <stdio.h>
 2 
 3 void swap_value(int x,int y)
 4 {
 5     int temp;
 6     temp = x;
 7     x = y;
 8     y = temp;   
 9     printf("傳值函數內的輸出 %d %d \n",x,y);
10 }
11 
12 void swap_address(int *x,int *y)
13 {
14     int temp;
15     temp = *x;
16     *x = *y;
17     *y=temp;   
18     printf("傳址函數內的輸出 %d %d \n",*x,*y);
19 }
20 
21 int main(int argc, char *argv[])
22 {
23     int x = 10;
24     int y = 0;
25     
26     printf("x y \n");
27     printf("初值 %d %d \n",x,y);
28     //傳值子程序調用(交換xy) 
29     swap_value(x,y);
30     printf("傳值函數外調用 %d %d \n",x,y);
31 
32     //傳地址字程序調用(交換x,y) 
33     swap_address(&x,&y);
34     printf("傳址函數外調用 %d %d \n",x,y);
35     return 0;
36 }
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM