gpt4 book ai didi

c++ - &string 和 &string[0] 的内存地址不同?

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:23 27 4
gpt4 key购买 nike

来自 Strings in Depth ,我了解到字符串类的内存布局的确切实现不是由 C++ 标准定义的。但是为什么&string&string[0]会有不同的内存地址呢?

string variable("String Test");
cout << (void *) &variable << endl; // 003EFE58
cout << (void *) &variable[0] << endl; // 003EFE5C
cout << (void *) &variable[1] << endl; // 003EFE5D
... ...

但他们确实共享相同的内容,查看:

cout << ((string)*(&variable))[0] << endl;  // 'S'
cout << *(&variable[0]) << endl; // 'S'

谁能解释一下这是怎么回事?

最佳答案

因为一个是类实例的地址,另一个是第一个字符的地址,它通常包含在由类管理的动态分配的内存中(或者在实例本身的某个地方,在 SSO 的情况下) ).

关于c++ - &string 和 &string[0] 的内存地址不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21355731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com