引数と戻り値

今日は関数を作るよ!

#include <stdio.h>

char getNextValue(char val)
{
	char ret = val + 1;
	printf( "in func, val = %d, ret = %d\n", val, ret );
	val += 2;
	printf( "in func, val = %d, ret = %d\n", val, ret );
	val += 2;
	printf( "in func, val = %d, ret = %d\n", val, ret );
	return ret;
}

int main(int argc, char *argv[])
{
	char val = 0;
	printf( "in main, val = %d\n", val );
	val = getNextValue( val );
	printf( "in main, val = %d\n", val );
	val = getNextValue( val );
	printf( "in main, val = %d\n", val );
	return 0;
}

実行結果
in main, val = 0
in func, val = 0, ret = 1
in func, val = 2, ret = 1
in func, val = 4, ret = 1
in main, val = 1
in func, val = 1, ret = 2
in func, val = 3, ret = 2
in func, val = 5, ret = 2
in main, val = 2

今回作った関数は、charというサイズに収まる値を渡すと、
次の数字をcharというサイズに収めて返すものだよ。
getNextValueの中のvalと、mainのvalが違うものだって分かるかな?
入れ物から入れ物に値だけを渡す方法を、「値渡し」って呼んでいるよ。
returnを通して値を返しているけど、
これも入れ物の中の値を返しているよ。
どういう値が返ってきてるかは、実行結果をよく見てね。
1個1個分からなくても、なんとなく分かることが大切だよ。

Leave a Comment