據我所知,函數fun()結束後,變量'q'和地址超出了範圍。那麼,爲什麼代碼的輸出是「20 10」?爲什麼輸出「20 10」而不是垃圾值(懸掛指針)?
int *p2;
void fun(int *ptr)
{
int q=10;
ptr=&q;
p2 = ptr;
}
int main()
{
int r=20;
int *p = &r;
fun(p);
printf("%d %d",*p,*p2);
return 0;
}
這樣的功能因爲它是未定義的行爲。 –
如何從非垃圾值中分辨垃圾值?你的'10'是一個垃圾值,和其他垃圾一樣好。 – AnT
'10'是垃圾。 – chux