printfの有無で値が変わる
Posted: 2016年11月01日(火) 23:34
下記のプログラムはprintfでaのアドレスを表示させると、
mainでfの引数に入れた数字が出力され、表示させないと不定値が出力されます。
aのアドレスを表示させるとなぜ引数の値が出力されるのでしょうか?
メモリ解放はされないのでしょうか?
出力例
printfあり
----------------------------------------
0x7ffd72e66b74 = 2
printfなし
----------------------------------------
-753662152
ソース
----------------------------------------
#include <stdio.h>
int *f(int x){
int a = x;
printf("%p = ", &a); //ココの有無で値が変わる
return &a;
}
int main(void){
printf("%d", *f(2));
}
mainでfの引数に入れた数字が出力され、表示させないと不定値が出力されます。
aのアドレスを表示させるとなぜ引数の値が出力されるのでしょうか?
メモリ解放はされないのでしょうか?
出力例
printfあり
----------------------------------------
0x7ffd72e66b74 = 2
printfなし
----------------------------------------
-753662152
ソース
----------------------------------------
#include <stdio.h>
int *f(int x){
int a = x;
printf("%p = ", &a); //ココの有無で値が変わる
return &a;
}
int main(void){
printf("%d", *f(2));
}