值傳遞和地址傳遞舉例辨析

C/C++裏面聲明一個函數的同時可以傳入一些參數,稱之爲形式參數(形參),在傳輸參數時,有值傳遞和地址傳遞,如:

#include<stdio.h>

void fun(int c); //值傳遞
void fun_p(int *d); //地址傳遞

int main()
{
    int a = 0;
    int b = 0;

    fun(a);

    fun_p(&b);

    printf("值傳遞:");
    printf("%d\n", a); //值傳遞,無法改變實際變量值

    printf("地址傳遞:");
    printf("%d", b); //地址傳遞,傳入的是地址,即實際操作了該地址處的變量

    return 0;
}

void fun(int c)
{
     c= 4;
}

void fun_p(int *d)
{
    (*d) = 8;
}

看出來,在使用值傳遞時,並不能真正改變在主方法中聲明的變量的值,而按地址傳遞就可以。
如上,因爲在值傳遞時,傳入的是變量a的值,在方法中操作時,會產生一個新地址來存儲該複製的a的值,並對其操作(相當於另外一個變量)。而在函數處理完畢,a變量並未做任何變量,其值不變。
在按地址傳遞時,由於傳遞的是變量的地址,所以在方法中爲參數變量的操作,實際上就是對主方法中的變量操作,所以真正的改變b變量的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章