작성
·
100
1
이중 포인터가 아니라 밑에 포인터만 써도 그냥 포인터만 써도 답이 이중 포인터랑 똑같이 나오는 이유는 무엇일까요??
void swap(char* xp, char* yp)
{
char* temp = *xp;
*xp = *yp;
*yp = temp;
}
답변 1
1
안녕하세요, 질문&답변 도우미 Soobak 입니다.
첨부해주신 코드는 컴파일 에러가 발생합니다.
혹시, 오타가 나신 것은 아니신지, 혹은 컴파일 에러가 발생하여 이전에 성공적으로 수행되었던 빌드가 실행된 것은 아니신지 다시 한 번 확인해주시면 감사하겠습니다.
char* temp = *xp;
부분에서, xp
는 char*
타입이기 때문에, *xp
는 char
타입의 값입니다.
하지만, temp
이 char*
타입의 변수로 선언되어 있으므로, char
타입의 값을 char*
타입의 변수에 할당하려는 타입 불일치 오류가 발생합니다.
따라서, 이어지는 *xp = *yp;
와 *yp = temp;
부분에서도 각 포인터가 가리키는 값을 서로 교환하려고 시도하여도, temp
에 올바른 타입의 값이 저장되지 않았기 때문에 동작하지 않을 것입니다.