by value: 將呼叫函數的傳入變數複製一份給相對應的參數 以提供函數實作區內的
參數運用 因此並不會改變呼叫函數的傳入變數
ex: #include <stdio.h>
void add(int);
void add(int k)
{
k++;
printf("the value of function add():%d\n",k);
}
void main()
{
int i=5;
printf("before call by value:%d\n",i);
add(i);
printf("after call by value:%d\n",i);
}
output:5
6
5
by address: 把參數列的參數宣告成指標型態 以便放置傳入變數的位址 用傳位址的
方式來傳遞參數 將會把呼叫函數的傳入變數位址 指派給被呼叫函數的
參數列中相對應參數 故能透過指標來使用傳入變數本身
ex: #include <stdio.h>
void add(int *);
void add(int *k)
{
*k=*k+1;
printf("the value of function add():%d\n",*k);
}
void main()
{
int i=5;
printf("before call by address:%d\n",i);
add(&i);
printf("after call by address:%d\n",i);
}
output: 5
6
6
by reference: 把參數列之參數設為參考型態 以便讓參數參考相對應的傳入變數
ex: #include <stdio.h>
void add(int &);
void add(int &k)
{
k=k+1;
printf("the value of function add():%d\n",k);
}
void main()
{
int i=5;
printf("before call by reference:%d\n",i);
add(i);
printf("after call by reference:%d\n",i);
}
output: 5
6
6
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.240.76