2013-10-07 1 views
0

문자열의 길이가 n + 1이어야한다는 것을 알고 있습니다. 그러나 어떤 이유로 프로그램이 sizeof (string)을 n-2로 인쇄하고 있습니다.C - sizeof (string) 결과가 작아야합니다.

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    char name [] = "Tom"; 
    int x = sizeof(name); 
    int i; 

    printf("sizeof(name) = %d\n", i); 

    for(i = 0; i < x; i++) 
    { 
     printf("Character at %d is %c\n", i, name[i]); 
    } 

    return 0; 
} 

아무도 이유를 설명 할 수 있습니까?

+3

'i'의 값을 인쇄하고 있습니다. 초기화되지 않았습니다. –

+0

컴파일러 경고를 읽으십시오. – SLaks

답변

6

x이 아닌 i을 인쇄하고 있습니다.
i은 초기화되지 않았으므로 정의되지 않은 동작이 발생합니다.

+1

i 대신 x를 사용하면 예상했던 n + 1 인 4가됩니다. – DAhrens

+1

아, 알겠습니다. 문제는 내가 바보라는 것이다. 감사. XD – Aezur