代码疑云(3)-静态字符串

来源:互联网 发布:不用root恢复手机数据 编辑:程序博客网 时间:2024/05/12 02:53
1.#include<iostream>  2.using namespace std;  3.int main()  4.{  5.  char *str1 = "string";  6.  char *str2 = "string";  7.  if(str1 == str2)  8.    cout<<"str1 is same as str2";  9.}  

:str1 的值是否等于 str2 而输出字符串“str1 is same as str2”呢,为什么?

解答:是的 “str1 is same as srr2”,也就是说str1与str2指向了相同的内存地址,因为"string"是静态对象,是由编译器分配给他的内存空间,在代码中出现了两次,编译器并不会给他们分别分配空间,因为如果这样将会造成不必要的浪费。