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

yuntyu01님의 프로필 이미지
yuntyu01

작성한 질문수

홍정모의 따라하며 배우는 C언어

11.8 문자열의 포인터를 정렬하기

이중포인터를 안 써도 답이 똑같은 이유가 몰까요

작성

·

100

1

이중 포인터가 아니라 밑에 포인터만 써도 그냥 포인터만 써도 답이 이중 포인터랑 똑같이 나오는 이유는 무엇일까요??

 

void swap(char* xp, char* yp)
{
	char* temp = *xp;
	*xp = *yp;
	*yp = temp;
}

답변 1

1

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

첨부해주신 코드는 컴파일 에러가 발생합니다.
혹시, 오타가 나신 것은 아니신지, 혹은 컴파일 에러가 발생하여 이전에 성공적으로 수행되었던 빌드가 실행된 것은 아니신지 다시 한 번 확인해주시면 감사하겠습니다.

char* temp = *xp; 부분에서, xpchar* 타입이기 때문에, *xpchar 타입의 값입니다.
하지만, tempchar* 타입의 변수로 선언되어 있으므로, char 타입의 값을 char* 타입의 변수에 할당하려는 타입 불일치 오류가 발생합니다.

따라서, 이어지는 *xp = *yp;*yp = temp; 부분에서도 각 포인터가 가리키는 값을 서로 교환하려고 시도하여도, temp 에 올바른 타입의 값이 저장되지 않았기 때문에 동작하지 않을 것입니다.

yuntyu01님의 프로필 이미지
yuntyu01

작성한 질문수

질문하기