Причина, по которой вы можете видеть значение переменной, заключается в том, как работает стек.Фактически, когда вы вводите функцию num
, указатель (указатель стека) перемещается, чтобы добавить пространство для локального хранилища функции.Когда вы выходите из функции, указатель стека эффективно перемещается назад, что означает, что следующий вызов функции перезапишет хранилище стека, использованное в предыдущем вызове функции.Однако до тех пор, пока оно не будет перезаписано, значение существует в подвешенном состоянии.Это все еще на самом деле в памяти, но может быть перезаписано в любой момент.Существование фактического значения может иметь место, а может и не быть.Вот почему выполнение, как вы делаете выше, известно как неопределенное поведение .
В основном ... не делайте этого.