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變量的值。