范围和指针

时间:2016-06-05 02:22:41

标签: c++ pointers scope

这是我有一个问题的代码:

int* getPtrToFive() {   
   int x = 5;   
   return &x;
}  
int main() {   
   int *p = getPtrToFive();   
   cout << *p << endl; // ??? 
}

演讲幻灯片说* p不会给出有效的结果,因为当返回getPtrToFive时,x超出范围。但是,我认为getPtrToFive已经包含值5,这将验证* p?是因为指针试图将我引导到getPtrToFive,其范围超出范围x?

2 个答案:

答案 0 :(得分:3)

您似乎无法理解指针的基本概念。把它想象成房子的地址。 1 Main St是你的指针。但是如果房子被毁坏会发生什么呢?有人会一路开车到1 Main St,只能在那里找到一堆碎片......当然不是一个好结果。

所以,当函数退出时,房子就会被摧毁。你还有地址,但没有留下任何东西。

答案 1 :(得分:0)

是的,你是对的。

即使输出以某种方式5,访问超出范围的内存也是非法的。