マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

C言語の関数呼び出し元のローカル変数変更

どこでもうまく行くかは知らないが、Visual Studio 2010で試したら、modifyでmainのtestを書き換えることができた。今更だし、だから何だと言う話だが...

#include <stdio.h>

void modify(){
    int temp = 0;
    int *p = &temp;

    for(int i = 0; i < 100; i++){
        if(*(p + i) == 100){
            *(p + i) = 200;
        }
    }

    printf("TempAddr = %p\n", &temp);
}

int main(){
    int test = 100;

    modify();
    printf("TestAddr = %p\n", &test);
    printf("TestValue = %d\n", test);

    return 0;
}