:스택 정수에 대한 포인터 값 (NULL이됩니까?)? 다음 코드 조각을 감안할 때
#include <iostream>
using namespace std;
int *pPointer;
int func()
{
int num;
num = 25;
pPointer = #
}
int main()
{
func();
cout << *pPointer << endl;
cout << *pPointer << endl;
return 0;
}
내가 다음 줄을 복제하는 경우 사람이 말해 줄 수 : 내가받을 이유
cout << *pPointer << endl;
cout << *pPointer << endl;
25 (예상대로)하지만 다음 값이 0 (NULL)?
int = 25 값이 스택에 남아 있지 않습니까? pPointer의 가치를 변화시키는 cout에 대해서는 무엇입니까? 범위와 스택에 대한 나의 이해에 대해 뭔가 빠졌는가? (나는 자바 녀석이다. 그래서 이것은 놀랍다).
코드에 정의되지 않은 동작이 있습니다. 'func()'는'int'를 리턴해야합니다. 그리고'func()'가 빠져 나간 후 포인터를 역 참조하는 것도 정의되지 않았다. – Praetorian
@GSerg의 링크에있는 설명이 가장 좋은 대답입니다. – jliv902
감사합니다 * 모두 * 대답으로 모두 표시해 주시기 바랍니다. 범위와 정의되지 않은 동작으로 무언가를해야한다는 것을 알았지 만 명확히 해 주셔서 감사합니다. 코드! – gcraig