두 포인터의 "주소"를 바꾸는 방법은 없을까요?

조회수 698회

두 포인터가 가리키는 '값'을 바꾸는 방법은 조금만 검색해도 나오는데... 두 포인터가 가리킬때 사용하는 '주소'를 바꾸는 방법은 아무리 해도 안나오네요... 혼자 해보려고 해도 자꾸 오류가 나거나 컴파일이 되어도 결과가 이상하고...ㅠㅠ 예를 들면 값을 바꿀때는

void swap(int *a, int *b){
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}

이런식으로 하면 되는데, 주소를 바꾸려고 하면 a = b; 이 부분에서 "주소에는 주소를 대입할 수 없다" 라는 오류만 주구장창 뜨네요. 어떻게 해야 주소를 서로 바꿔줄 수 있을까요? 제발 부탁드립니다.

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    int swap(int ** a, int ** b) {
        int * temp;
        ...
    }
    

    이렇게 해야겠군요.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 포인터 변수a와 포인터 변수b를 초기화한(실제 주소값을 할당) 후에 해보세요.

    예를 들면

    int main(void) {
    int *a, *b;
    int c = 1;
    int d = 2;
    a = &c;
    b = &d;
    a = b;
    printf("%d", *a);
    }
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 감사합니다만, 저는 포인터가 매개변수인 함수로 그걸 구현하고 싶어서요... main에서는 되는것 같지만, 함수로 같은 방식으로 구현하기엔 힘드네요...혹시 함수로도 만들어주실 수 있으신가요? 윤태완 2019.5.25 15:16

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)