Schemeをつくろう(11) 実験中

ポインタ渡し、値渡し、ポインタ渡し、値渡し・・・。

#include <stdio.h>

void frame_b(int *env)
{
    *env = 30;
}

void child(int env)
{
    printf("child : before : %d\n", env);
    frame_b(&env);
    printf("child : after  : %d\n", env);
}

void frame_a(int *env)
{
    *env = 20;
    child(*env);
}

int main(void)
{
    int env = 10;

    printf("main  : before : %d\n", env);
    frame_a(&env);
    printf("main  : after  : %d\n", env);

    return 0;
}

フレームは親を変更することが出来る。子供は頑張ってみても親を変更することが出来ない。

main  : before : 10
child : before : 20
child : after  : 30
main  : after  : 20

いい感じだ。壁が出来た。

さて、うまくいくかな・・・。