프로그래밍

 3198, 1/160 회원가입  로그인  
   bak405
   [c언어]간단한 소스 질문입니다.

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2816 [복사]


#include<stdio.h>
#include<string.h>


int main()
{
        char buf[5]="abcde";
        int i;
        for(i=0;buf[i]!='\0';i++)
        {}
        printf("%d\n",i);

}
위의 소스는 문자열의 길이를 출력하는 프로그램인데요
원칙대로 보자면 프로그램이 문자 a, b, c, d, e를 읽은 다음 널 문자를 만나기 때문에 쉽게 생각해 보면,
결과 값은 5가 나와야 되지만,
프로그램 실행 결과 11이라는 값이 나옵니다.
물론 괄호 안의 buf값을 5가 아니라 6을 주어 버리면 당연히 결과 값은 5가 나오지만요.
왜 이런 결과가 나오는 지 이유를 알고 싶습니다.

  Hit : 4192     Date : 2010/12/24 12:21



    
ruka270 buf크기가 5인데 buf[4]까지 값이 들어가 있으니(buf[4]='e')
당연히 저 반복문으로는 buf범위를 벗어나 버리니 그렇죠...-_-;
우연찮게 buf를 넘어선 11번째 주소에 null이 있었을뿐.
2010/12/24  
bak405 buf의 범위를 벗어나서 11이 나오는 건 알겠는데, 왜 11번째 주소에 null이 생겼는지 잘 모르겠어요; 2010/12/24  
sonogongx 우연히 11번째에 null이 있어서 그렇겠죠...
왜 11번째에 null인지는 알기 어렵겠죠...
2011/01/01