프로그래밍

 3198, 1/160 회원가입  로그인  
   psh34
   C언어 공부중에 궁금증이 생겼어요 도와주세요

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


C언어 배열 부분입니다.

예를 들어 str[5]라고 하면 0~4까지 쓰는데요

이것이 문자열일 경우에는 마지막에   null문자가 들어가는 걸로 알고 있습니다

그런데 이런 경우에는 엉뚱한 값이 나오더군요.

#include <stdio.h>

int main(void)
{
        double total;
        double val[5];

        val[0]=1.01;
        val[1]=2.02;
        val[2]=3.03;
        val[3]=4.04;
        val[4]=5.05;
        val[5]=6.06;
        printf("%lf\n",val[5]);
        total=val[0]+val[1]+val[2]+val[3]+val[4]+val[5];
        printf("평균 : %lf \n",total/6);
        printf("%lf\n",val[0]);
        printf("%lf\n",val[1]);
        printf("%lf\n",val[2]);
        printf("%lf\n",val[3]);
        printf("%lf\n",val[4]);
        printf("%lf\n",val[5]);
        return 0;
}

결과는 printf("%lf\n",val[5]); 값만 21.21000 뭐 이런식으로 떳습니다. 토탈값과 같네요

처음에 출력시에는 6.06 그대로 나오다가 다시 한번 출력하라 했더니 저렇게 되네요

왜 그럴까요

물론 저렇게 쓰면 안되는 것은 잘 알고 있습니다.

  Hit : 4852     Date : 2011/03/26 03:14



    
/x7375696e6567 음?!
저게 컴파일이 되나요?
컴파일자체가 안될것같은데..
2011/03/26  
U_SoRang >> /x7375696e6567 님

--------------------Configuration: CodingTEST02 - Win32 Debug--------------------
Compiling...
CodingTEST02.c
Linking...

CodingTEST02.exe - 0 error(s), 0 warning(s)


[VC++ 6.0] 에서 compile 됩니다.
2011/03/26  
U_SoRang printf("Pointer address of <total> : %p \nPointer address of <val[5]> : %p\n", &total, &val[5]);

이 한 줄을 추가하시고 compile 하시면 답은 나옵니다.
2011/03/26  
psh34 교수님이 설명하신게 이런 뜻이었군요

감사합니다

덕분에 확실히 이해가 되었습니다. 이제 포인터하고 있답니다.

정확히 이해하고 넘어가고 싶습니다.
2011/03/28