«strlen» 태그된 질문

8
glibc의 strlen이 왜 그렇게 빨리 실행되어야합니까?
여기strlen 코드를 살펴보고 코드에 사용 된 최적화가 실제로 필요한지 궁금합니다. 예를 들어, 다음과 같은 것이 왜 똑같이 좋거나 더 좋지 않을까요? unsigned long strlen(char s[]) { unsigned long i; for (i = 0; s[i] != '\0'; i++) continue; return i; } 컴파일러가 코드를 최적화하는 것이 더 간단하거나 더 낫지 않습니까? …


2
2 차원 배열 앨리어싱시 예기치 않은 strlen 최적화
내 코드는 다음과 같습니다. #include <string.h> #include <stdio.h> typedef char BUF[8]; typedef struct { BUF b[23]; } S; S s; int main() { int n; memcpy(&s, "1234567812345678", 17); n = strlen((char *)&s.b) / sizeof(BUF); printf("%d\n", n); n = strlen((char *)&s) / sizeof(BUF); printf("%d\n", n); } 를 제외한 모든 최적화 수준에서 …

4
이 함수가 올바른 문자열 길이를 반환하는 이유는 무엇입니까? (char 포인터 늘리기)
문자열의 문자 수를 계산하는 함수입니다. int str_len(const char* s) { int i = 0; while(*(s++)) { i++; } return i; } 이것이 올바른 길이를 반환하는 이유는 무엇입니까? 간단한 String 으로이 함수를 호출한다고 가정 해 봅시다 "a". 그런 다음 swhile 루프에서 증가하므로 s및 의 값 i은 모두 0입니다.
12 c  while-loop  strlen  c89 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.