I would like help understanding this code:
void F (int a, int *b)
{
    a = 7 ;
    *b = a ;
    *b = 4 ;
    printf("%d, %d\n", a, *b);
    b = &a ;
}
int main()
{
    int m = 3, n = 5;
    F(m, &n) ;
    printf("%d, %d\n", m, n) ;
    return 0;
}
I am confused why this does not result in unexpected behavior. At the end of the function F, the value of b is 7. But when I return it is clear that nothing after ' b = &a ' impacts the value of n/b. I thought that pointing to a local variable would result in garbage/unexpected behavior when the scope changed, but that doesn't appear to be the case.
 
     
     
    