zoukankan      html  css  js  c++  java
  • 字符串的存储

    为了节省内存,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

  • 相关阅读:
    iOS~runtime理解上篇
    iOS
    iOS-数据库+上传队列+runtime
    python3
    必应壁纸破解下载
    python3-django Mac下安装以及查看路径
    iOS
    iOS
    Tornado异步之-协程与回调
    iOS
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3390854.html
Copyright © 2011-2022 走看看