작성
·
627
0
void swap(char** x, char** y) {
char* temp = *x;
*x = *y;
*y = temp;
}
이 함수에서 질문이 있습니다.
문자열 배열을 매개변수로 전달하기 위해서 이중포인터를 썻다는 것은 이해가 됐고,
임시 변수 temp에 문자열을 담아야 하니
char* temp 로 선언해준 것도 이해가 됐는데요,
왜 void swap() 함수 내부에서는, 매개변수로 이중포인터를 받아줬음에도 *x, *y로 사용하나요?(**x,**y가 아니라)
그리고 마지막 *y = temp; 문장도 temp선언을 포인터로 해줬는데 *y = *temp가 아닌 이유를 모르겠어요
안녕하세요 직접 답 달아주시니 감사합니다. 우선
이렇게 코드 써봤는데 컴파일은 되고 런타임에서 에러가 납니다.
이중포인터로 swap해주는 경우와, 단일포인터로 swap해주는 경우의 차이는 알겠는데, 코드를 쓸 때 이중포인터니까 이렇게 써야 하는 것이 아닌가 하는 의문입니다.
아무래도 매개변수로 써준 표현 그대로 쓰면 어떤문제가 있는지 감이 안옵니다
그리고 만약 *연산자를 1개만 써준다고 한다면 임시로 값을 저장해둘 temp 변수도 포인터변수가 아니라 그냥 이렇게 써줘야 하는 것 아닌가 하는 의문도 있습니다