関数を使う場合、呼び出し側と定義側の両方で引数を指定する。
呼び出し側を「実引数」といい、定義側を「仮引数」と呼ぶ。
■値渡しと参照渡し
引数を書く場合に、実引数と仮引数をまったく別もの(違うアドレス)として扱う場合は値渡しを行う。
値渡しの例
#include <stdio.h>
void addnum(int, int); //プロトタイプ宣言
void main()
{
int a = 2, b = 3;
int n;
n = addnum(a, b); //関数の呼び出し(値渡し)
printf("%d\n", n); //結果「2」となる
}
void addnum(int x, int y)
{
int temp;
temp = x;
x = y;
y = temp;
}
対して、実引数と仮引数を同じもの(同一アドレス)として扱う場合は参照渡しを行う。
参照渡しの例
#include <stdio.h>
void addnum(int *, int *); //プロトタイプ宣言
void main()
{
int a = 2, b = 3;
int n;
addnum(&a, &b); //関数の呼び出し
printf("%d\n", n);
}
void addnum(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp; //全て参照として処理している
//結果「1970678749」になる
}