引数の受け渡し(値渡しと参照渡し)

C

関数を使う場合、呼び出し側と定義側の両方で引数を指定する。
呼び出し側を「実引数」といい、定義側を「仮引数」と呼ぶ。

■値渡しと参照渡し
引数を書く場合に、実引数と仮引数をまったく別もの(違うアドレス)として扱う場合は値渡しを行う。

値渡しの例

#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」になる
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です