1. 傳值參數(非指針參數):
#include <stdio.h>
int inc(int x);
int main(void)
{
int num = 1;
printf("%d\n",inc(num)); /* 2 */
printf("%d\n",num); /* 1; num 並沒有改變,用作函數參數時只是復制過去 */
getchar();
return 0;
}
int inc(int x) {
x++;
return x;
}
2. 傳址: 參數是指針、參數是地址
#include <stdio.h>
int inc(int *p);
int main(void)
{
int num = 1;
printf("%d\n",inc(&num)); /* 2 */
printf("%d\n",num); /* 2; num 已被修改 */
getchar();
return 0;
}
int inc(int *p) {
*p = *p + 1; /* 通過地址修改了值 */
return *p;
}
3. 傳址但不被修改的例子:
#include <stdio.h>
int inc(int *p);
int main(void)
{
int num = 1;
printf("%d\n",inc(&num)); /* 2 */
printf("%d\n",num); /* 1 */
/* 雖然函數是傳址,但這裡的 num 並沒有改變; 因為下面的函數中並沒有給指針賦值 */
getchar();
return 0;
}
int inc(int *p) {
return *p + 1;
}
4. 形參與實參:
這只是沒有太大意義的稱呼而已,譬如下面例子中的
x 和 y 是 sum 函數的形參;
i 和 22 是 sum 函數的實參.
#include <stdio.h>
int sum(int x,int y);
int main(void)
{
int i = 11;
i = sum(i,22);
printf("%d\n",i);
getchar();
return 0;
}
int sum(int x,int y) {
return x + y;
}
返回“學點C語言 - 目錄”