인프런 커뮤니티 질문&답변

yoodud님의 프로필 이미지
yoodud

작성한 질문수

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

문자열

[문자열] 강의 부분에서 StrCpy함수 포인터로 구현 하는 부분 질문 있습니다.

작성

·

139

0

글로 질문은 처음이라 두서 없을 수 있다는 부분 양해 부탁 드립니다.

 

char* StrCpy(char dest, char src) 함수에서

char * ret = dest; 선언을 통해 기존 원본 위치값을 저장해 주는것은 알겠는데,

while문이 다 돌고 나서 'dest'의 값을 확인해 보면 문자열이 없는 것을 데이터를 확인 하여 알았습니다.

그 이유가 'dest++'을 통해 포인터의 시작 위치 값을 변경해 주어서 값이 없는 주소 부분을 가르키기 때문에 'dest'의 데이터가 아무것도 없는 것이 맞을까요?

 

그렇기 때문에 원본 데이터에는 정상적으로 들어있고,

함수내에서 'dest'의 주소 시작점이 뒤로 밀려나 데이터가 없다고 판단해도 되는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

yoodud님의 질문과 관련하여, char* StrCpy(char* dest, const char* src) 함수 구현에 대해 궁금하신 부분이 있으신 것으로 이해됩니다. 특히, 포인터를 이용하여 문자열을 복사하는 과정에서 dest++로 인해 dest의 시작 위치 값이 변경되어, 함수 완료 후 dest가 가리키는 위치가 문자열이 저장된 곳이 아닌 다음 위치를 가리키게 되는 부분에 대한 이해가 필요하신 것 같습니다.

이와 유사한 상황에 대해 설명한 기존의 질문&답변 링크를 찾았습니다. 이 링크는 strcpy() 구현과 관련하여 dest++ 후의 dest 포인터 관리에 대한 설명을 담고 있습니다.

  • strcpy() 구현 관련 질문: 이 질문에서는 strcpy 함수를 구현하면서 dest++를 통해 dest 포인터가 가리키는 위치가 변경되는 부분을 설명하고 있습니다. dest 포인터가 문자열을 복사한 후의 위치를 가리키게 되므로, 함수가 반환할 때 원본 문자열의 시작 위치를 가리키는 ret 포인터를 반환하는 방법에 대해 설명합니다.

위 링크에서는 dest 포인터를 증가시키면서 문자열을 복사하는 과정 후 dest가 가리키는 위치가 변경되어 원본의 시작 위치를 잃어버리는 현상과 이를 보정하기 위해 처음에 dest의 시작 위치를 다른 포인터 변수에 저장하는 방식을 설명하고 있습니다. 이는 yoodud님의 질문에 대한 궁금증을 해소하는 데 도움이 될 것 입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yoodud님의 프로필 이미지
yoodud

작성한 질문수

질문하기