1999年度のプログラミングIIIの授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は江上の授業ページで。
[EGAMIX トップ] > [授業のページ] > [1999年度 プログラミングIII] > [授業ノート・資料]

[Back] [Index]
 
関数の参照呼出しの簡単な例題


 
値による呼び出し(Call by Value)
 
以下は簡単な関数呼び出しプログラムである。実行結果を予想(確認)してみてください。
 
#include <stdio.h>

void sub(int a);

main(void)
{
    int i;

    i = 10;
    printf("before: %d\n", i);

    sub(i);

    printf("after: %d\n", i);
}

void sub(int a)
{
    a = 1;
}

 
 
 
参照による呼び出し(Call by Reference)
 
以下は上記のプログラムを参照呼出し形式に変更したプログラムである。やはりこのプログラムも実行結果を予想(確認)してみてください。
 
#include <stdio.h>

void sub(int *a);

main(void)
{
    int i;

    i = 10;
    printf("before: %d\n", i);

    sub(&i);

    printf("after: %d\n", i);
}

void sub(int *a)
{
    *a = 1;
}

 
 
[Q] 上記の2つのプログラムは実行結果が違っている。なぜだろうか?数値情報がどのように扱われるかという観点から考えてみてください。
 
 
 

[Back] [Index


egami@egamix.com