void fun(int* x){
x=(int*)malloc(sizeof(int));
*x = 20;
}
int main(){
int y=31;
fun(&y);
printf(%d,y);
}
なぜこのコードはコンパイルに成功するのですか?なぜこのコードは "20"を印刷しないのですか?
コメント:これはEclipseでコンパイルされました 私はこの問題を次のように見ています。 x =(int *)malloc(sizeof(int));
なぜこのプログラムは実行時にクラッシュしませんでしたか?
Cはあなたに十分なロープを与えてくれるからです。 – Idos
削除 'x =(int *)malloc(sizeof(int));'%d \ n "' – BLUEPIXY
mallocの結果をC言語にキャストしてsizeof( * x)をsizeof(int)の代わりに使用します。 – Caw