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              <- 呼び出した関数内での変更が反映される


Copyright(C) 2006-2012 CLAYPOT. All Rights Reserved.