작성
·
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
포인터 관리에 대한 설명을 담고 있습니다.
dest++
를 통해 dest
포인터가 가리키는 위치가 변경되는 부분을 설명하고 있습니다. dest
포인터가 문자열을 복사한 후의 위치를 가리키게 되므로, 함수가 반환할 때 원본 문자열의 시작 위치를 가리키는 ret
포인터를 반환하는 방법에 대해 설명합니다.위 링크에서는 dest
포인터를 증가시키면서 문자열을 복사하는 과정 후 dest
가 가리키는 위치가 변경되어 원본의 시작 위치를 잃어버리는 현상과 이를 보정하기 위해 처음에 dest
의 시작 위치를 다른 포인터 변수에 저장하는 방식을 설명하고 있습니다. 이는 yoodud님의 질문에 대한 궁금증을 해소하는 데 도움이 될 것 입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.