|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2795 [복사]
/* strcopy.c */
#include <stdio.h>
void strcopy (char *pDst, char *pSrc);
void main()
{
char szString1[20] = "This is a String";
char szString2[20] = { 0, };
strcopy (szString2, szString1);
printf("szString2 : %s \n", szString2);
}
void strcopy (char *pDst, char *pSrc)
{
while( (*pDst++ = *pSrc++ ) != '\0' );
}
말 그대로 문자열을 복사하는 간단한 코드인데요.
이 부분이 좀 이해가 갈랑 말랑 하는 데.
while( (*pDst++ = *pSrc++ ) != '\0' );
지금 이 문장은 szString1의 배열에 저장된 값들이 하나 하나 szString2로 대입 혹은 옮겨지고 있는 것인데..
(*pDst++ = *pSrc++ ) != '\0'
이 부분을 어떻게 해석하면 좋을 지.. 말로 풀이해주심 감사함니당-0
(*pDst++ = *pSrc++ ) 이게 NULL 문자가 될 때까지 while 문을 실행하는 것인데,
구체적으로 *pDst가 NULL 문자가 나올 때 까지 실행하는 건가요? 참 해석하기 난감하네요.
(*pDst++ = *pSrc++ ) 이것 자체가 어떻게 NULL이 되라는 건지..
제 개인적인 생각으로는,
szString1의 "This is a String"에서 마지막 문자 g까지 szString2에 대입된 후, 공백 문자('\0')가 아마 szString2에 대입되겠죠? 왜냐면 배열의 마지막은 항상 NULL 문자가 포함되니까요. 따라서, szString1의 마지막 NULL 문자가 szString2로 옮겨지는 거구요. 그쵸????? 쓰다보니 이게 맞는 것 같은데..
하여튼 그 때, while문이 종료 되는 것이라고 저는 생각하는데.
해커스쿨 분들은 잘하시니까. ('님들은'이라고 쓰면 비정상적인 통신어체라서 사용하지 말라고 되어있네염-)
제 막연한 생각. 뻥 뚫리게 도와주삼.
대학 가기전에 혼자 공부하는 거라, 도움 줄 사람들이 여기 밖에 없네영 ㅋㅋ
|
Hit : 4786 Date : 2010/12/08 01:42
|