【发布时间】:2014-05-11 14:29:58
【问题描述】:
假设我有以下数组
char ch[1000];
我初始化这个字符
for (int i = 0; i < 1000; i++) {
ch[i] = 0;
}
然后我想在while循环中使用这个数组
bool active = true;
int i = 0;
while(active) {
ch[i] = ....... // fill the array with certain ashii
// code
strcpy(string, ch); // after this - I may go back to the top of the loop and startover
i++;
}
循环实际上看起来并不像这样 - 但这只是示意图。问题就在这里(也是我的问题)——如果我现在想在循环中再次使用这个 char 数组——那就是转到 while 循环的顶部并用新字符填充 char 变量,最好的方法是什么从旧字符中清空数组。
1) 更改代码,以便我在 while 循环中声明此缓冲区
用for循环重新初始化它似乎没有效率,就像我在循环外做的那样
for (int i = 0; i < 1000; i++) {
ch[i] = 0;
}
这种方法似乎需要很多 cpu 指令
有没有更好的方法来做到这一点?
【问题讨论】:
-
你不会“清空一个数组”,你只是重复使用它。此外,如果您只对之后明确覆盖的元素感兴趣,那么将所有元素归零确实没有意义。这只需要时间和代码。
-
while 循环中的
i是什么? -
如果你说
char ch[1000] = {};,你已经得到了一个零初始化的数组。不需要循环。 -
@anders:AFAICT,它是关于出于某种目的使用 char 数组,并且您(重新)初始化它,误认为您可以“清空数组”或必须“(重新-)在(重新)使用之前重新初始化”它。我谈到了这一点,因为最有效和最优雅的代码是省略代码。
-
不清楚您使用
char[]数组的目的是什么,但也许您应该考虑改用std::string、std::vector或std::array?
标签: c++ arrays initialization