我一直很想知道
“如何确定字符串长度”
并问我的老师。
他告诉你必须假设一个值并分配给srting。
最终,这使我想到了最初的问题:如何将特定长度设置为字符串长度。我曾经考虑过内存分配,即通常给我们最多输入大约20到30个字符,这样浪费了其余部分。
我什至问老师,有没有办法动态地声明数组大小,而他拒绝了。
用户输入字符串后,有什么办法分配内存?
答案 0 :(得分:1)
过去,我们最多只能输入20到30个输入,因此浪费了
是的。分配的数量没有限制,但是如果您知道不需要的数量超过一定数量,则可以分配那么多。通常,对于在现代PC上运行的Hello World而言,您并不需要太多的内存,但是如果您在数据库中存储了具有名称等的数百万条记录,那么考虑一下内存消耗是很好的。
我什至问老师,有什么办法可以降低数组大小 动态地,以便他回答“否”,请帮忙
您可以动态分配内存。假设您有这样的代码:
int n = 30;
char *string = malloc(n);
free(string); // any memory allocated with malloc should be freed when it is not used anymore
现在string
的大小为30
,因为这就是n
的设置,但是可以在运行时确定。可能是用户输入的内容。
在C ++中,有一个名为std::string
的结构可以自动为您分配动态内存。您可以做类似的事情
std::string s = "Hello";
s += " World";
您甚至不必担心内存分配。如果内部不适合,它将使用摊销的常量运行时间自行重新分配内存。