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
좋은 찾기. 그것은 제거되었습니다 – Quincy
순수하게 참조 용으로 "foo"가 가변 문자열 인 std :: reverse (foo, foo + strlen (foo))를 사용하여 동일한 효과를 얻을 수 있습니다. AFAIK, 대부분의 std :: reverse() 구현은 이러한 기본 반복기, 즉이 경우 포인터를 사용할 때 스레드로부터 안전하고 재진입 가능합니다. strlen() 주석이 게시 한 내용은 여전히 적용됩니다. – Void