【发布时间】:2011-05-30 22:57:30
【问题描述】:
当您使用 array[i] 访问数组的元素时,我认为 C++ 会在内存中获取数组的起始位置并添加 i*sizeof(一个数组元素),然后取消引用该地址(或做一些等效的操作我刚才描述的)。但是,在我看来,如果你有一个字符串数组(std::string),每个元素的大小可能会根据字符串中的字符数而有所不同,所以肯定有其他事情发生。
另外,据我了解,数组元素存储在连续内存中。如果您将字符串存储在连续的内存中,然后将更多字符附加到其中一个,则所有后续字符串都必须移动。
有人可以向我解释这是如何工作的吗?
【问题讨论】:
-
发布一些工作代码示例。 “字符数组”、“std::string 数组”和“[pointers to] 字符数组”等是有区别的。
-
当我说字符串时,我的意思是 std::string,而不是 char*。
-
@pst: 没见过以前使用的短语“stdstr”。很有趣。
-
将标题中的“why”改为“how”;巧妙地改变了问题的含义。
-
实际上,我一直在争论自己是使用“为什么”还是“如何”。