c++ 内存分区/char* memcpy/string length/string size*

int main() {
    string t1("abcd");
    string t2;

    // x, y指向的地址相同(字符串存放到常量区,看下方图示), 存放x, y本身的地址是不相同的,
    const char* x = "abcd";
    const char* y = "abcd";

    char dest[100];
    // 将t1.c_str()中的内容拷贝到dest中
    // 拷贝的长度,是字符串长度(strlen(t1.c_str())) + 结束符长度1('\0')
    memcpy(dest, t1.c_str(), strlen(t1.c_str()) + 1);
   
    // 下面两种输出完全相同
    cout << "t1 string:" << t1 << endl;
    printf("t1 string:%s\n", t1.c_str());  //返回一个以'\0'终止的c字符串

    // size与length完全相同, length是因为沿用C语言的习惯而保留下来的,string类最初只有length,引入STL之后,
    // 为了兼容又加入了size,它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。
    printf("t1.size = %lu\n", t1.size());      //返回当前字符串的大小
    printf("t1.length = %lu\n", t1.length());  //返回当前字符串的长度

    return 0;
}
 
下方分区,不包括代码段区

 

posted @ 2021-10-25 11:34  邱明成  阅读(173)  评论(0编辑  收藏  举报