void reverse_string(char* string, int str_size) {
char tmp;
int i = 0;
int j = str_size - 1;
while (i < j) {
tmp = string[i];
string[i] = string[j];
string[j] = tmp;
++i;
--j;
}
}
我觉得这个函数是可重入的,因为它没有使用任何全局变量。它只修改参数。这个函数是可重入的吗?
我的问题是: 这个函数是可重入的吗? 如果是,我的论证是否足够好?
在此先感谢
我相信平等守卫'if(i == j)'是不必要的。你已经要求'i'严格小于'j'。 – dmckee 2009-09-16 21:50:58
很好找。它被删除 – Quincy 2009-09-16 22:51:02
仅供参考,您可以使用std :: reverse(foo,foo + strlen(foo))实现相同的效果,其中“foo”是可变的字符串。 AFAIK中,大多数std :: reverse()实现在使用这种基本迭代器(即本例中的指针)时是线程安全的并且是可重入的。 strlen()评论其他已发布,当然仍然适用。 – Void 2009-09-16 23:33:55