Overall variable experience

int *return_lva(void)
{
    int x;
    return &x;
}

#include <stdio.h>

int main(void)
{
    int *xp = return_lva();
    printf("xp = %p\n", xp);
}

gcc (9.4.0) warns (at least) about this, even without -Wall:

$ gcc lva.c 
lva.c: In function ‘return_lva’:
lva.c:5:12: warning: function returns address of local variable [-Wreturn-local-addr]
    5 |     return &x;
      |            ^~
1 Like