Loose-Info.com
Last Update 2012/07/05
TOP - C言語 - 関数 - 引数

関数の引数は、宣言によって次のような違いがあります。

・値として宣言
呼び出された関数内では引数のコピーを使用するため、呼び出し側の引数そのものに変更などは無い

・ポインタとして宣言
引数のアドレスがそのまま渡されるため、引数の値を変更した場合はそのまま呼び出し側でも反映される

(例)
#include <stdio.h> void func_1(int i) { i++; } void func_2(int *i) { (*i)++; } int main () { int i1 = 1; int i2 = 2; printf("func_1呼び出し前 i1 : %d\n", i1); func_1(i1); printf("func_1呼び出し後 i1 : %d\n", i1); printf("func_2呼び出し前 i2 : %d\n", i2); func_2(&i2); printf("func_2呼び出し後 i2 : %d\n", i2); return 0; }

実行結果
func_1呼び出し前 i1 : 1 func_1呼び出し後 i1 : 1 <- 呼び出した関数内での変更は反映されない func_2呼び出し前 i2 : 2 func_2呼び出し後 i2 : 3 <- 呼び出した関数内での変更が反映される