関数を使う場合、呼び出し側と定義側の両方で引数を指定する。
呼び出し側を「実引数」といい、定義側を「仮引数」と呼ぶ。
■値渡しと参照渡し
引数を書く場合に、実引数と仮引数をまったく別もの(違うアドレス)として扱う場合は値渡しを行う。
値渡しの例
#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」になる }