【发布时间】:2015-10-01 06:00:44
【问题描述】:
我如何在速度方面改进此功能:
void chrapp (char arr[], char chr, int pos)
{
memmove(arr + pos + 1, arr + pos, strlen(arr + pos));
*(arr + pos + 1) = chr;
}
此外,不幸的是,它不适用于将字符附加到 数组 的最开头,这也是一种改进。
【问题讨论】:
-
抛开性能不谈,它不能可靠工作的部分原因是未能同时移动终结器。
-
试试
memmove(arr + pos + 1, arr + pos, strlen(arr + pos) + 1);,这样你也可以复制空值。 -
还有
*(arr + pos) = chr;,而不是*(arr + pos + 1) = chr;——你需要写到你打开的空间,而不是它后面的字符。 -
啊,是的。数组不保证填充
\0s -
总是衡量像这样的低级更改/优化的效果;并尝试不同的编译器优化。使用当前的高级编译器很容易做出错误的假设。