C++两道面试题,有兴趣的来看看,看你能不能做对,该如何处理

C++两道面试题,有兴趣的来看看,看你能不能做对
威盛软件面试题目  
1.   char   *   str1= "hello ";  
    char   *   str2= "hello ";  
    *str1= 'p ';  
    cout < <str2 < <str1 < <endl;  
问执行结果  
2.     char   *   str= "hello,   world! "  
      strcpy(str, "hi ");  
大概是这样,问执行结果  


------解决方案--------------------
我都说了很明白了,看来VC版还有很多人需要补习一下指针概念

“两个不同的指针,但是指针指向的地址是相同的”

&str1与&str2是指针的地址 这两个是不同的
str1和str2才是指针指向的地址 这两个是相同的

由于两个指针指向相同的字符串常量。

==============================
在这解释一下为什么这么优化的原因

因为是字符串常量,也就是说编译器假设其不会被更改
如果在内存中保存两份相同的字符串,这样将造成资源的浪费
因此,编译器优化之后使两个指针指向相同的字符串。