字符串的存储

为了节省内存,c/c++把常量字符串放到单独的一个内存区域。当几个指针赋值给相同的常量字符串时,

它们实际上会指向相同的内存地址。但用常量内存初始化数组,情况却有所不同。

int _tmain(int argc, _TCHAR* argv[])

  char str1[]="hello world";  char str2[]="hello world";  

  char* str3 = "hello world";  char* str4 = "hello world";  

  cout<<(str1==str2)<<endl;  

  cout<<(str3==str4)<<endl;

   return 0;

}

 输出结果:0 1

str1和str2是两个字符串数组,我们会为它们分配两个长度为12字节的空间,并把"hello world"的内容分别复制到数组中去。这是两个初始地址不同的数组,因此str1与str2的值不同,所以输出的第一行是0

str3和str4是两个指针,我们无须为它们分配内存以存储字符串的内容,而只需要把它们指向"hello world"在内存中的地址就可以了。由于"hello world"是常量,在内存中只有一个拷贝,因为str3和str4是指向同一个地址。因此输出1

原文地址:https://www.cnblogs.com/crazycodehzp/p/3390854.html