按值傳遞(按副本傳遞):
給函數傳遞變元(參數)時,變元(參數)不會直接傳遞給函數,二十先制作變元(參數)值的副本,存儲在棧上,再使這個副本可用於函數,而不是使用初始值。
例如:
#include<stdio.h> void change(int); int main() { int num = 9; change(num); //將num = 9的值復制一份給change中的變量, printf("num = %d\n",num);//change中的值為副本, return 0; //main函數中的num不隨change函數中的num的改變而變 } void change(int num) { num++; }
運行結果:
num = 9
引用傳遞:
指在調用函數時將實際參數的地址傳遞到函數中,那么在函數中對參數所進行的修改,將影響到實際參數
#include<stdio.h> void change(int *); int main() { int num = 9; change( &num ); //傳num的地址 printf("num = %d\n",num); return 0; } void change(int * num) //指針型變量,存放的是main函數中整型變量num的地址 { *num += 1; //*表示取地址,取這個地址的值,指向num的值,然后對它執行加一的操作 }
數組作為函數參數: