포인터 및 배열 초기화로 인해 Strlen 및 Sizedof의 출력이 다름
C 프로그래밍에서 sizeof 및 strlen 함수는 크기 및 크기에 대한 정보를 제공합니다. 데이터 유형의 길이입니다. 그러나 포인터와 배열을 처리할 때 이러한 함수의 출력이 다를 수 있어 혼란을 초래할 수 있습니다.
다음 예를 고려하세요.
<code class="c">char *str1 = "Sanjeev"; char str2[] = "Sanjeev"; printf("%d %d\n", strlen(str1), sizeof(str1)); printf("%d %d\n", strlen(str2), sizeof(str2));</code>
이 코드의 출력은 다음과 같습니다.
7 4 7 8
설명:
차이점을 더욱 명확히 하려면 다음 코드 수정을 고려하세요.
<code class="c">char str2[8]; strncpy(str2, "Sanjeev", 7); char *str1 = str2; printf("%d %d\n", strlen(str1), sizeof(str1)); printf("%d %d\n", strlen(str2), sizeof(str2));</code>
이 경우 출력은 다음과 같습니다.
7 4 7 8
str1과 str2가 모두 동일한 문자열을 참조하더라도 sizeof(str1)는 여전히 포인터의 크기를 반환합니다. str1은 배열의 첫 번째 요소를 가리키는 포인터인 반면 str2는 문자 배열이기 때문입니다.
위 내용은 C에서 `strlen`과 `sizeof`가 포인터와 배열에 대해 서로 다른 출력을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!