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