더블포인터 사용예제 입니다... 그런데 더블 꼭 써야하나요?
가온누리
#includestdio.h
void pswap(int *p1, int *p2);//void pswap(int **p1, int **p2);
int main(void)
{
int a=10, b=20;
int *pa=&a, *pb=&b;
//호출전
printf(pa = %d \n, *pa);
printf(pb = %d \n, *pb);
pswap(&pa,&pb);
//호출후
printf(pa = %d \n, *pa);
printf(pb = %d \n, *pb);
printf(a = %d \n, a);
printf(b = %d \n, b);
}
void pswap(int *p1, int *p2) //void pswap(int **p1, int **p2)
{
int *temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
더블 포인터를 사용하지 않았는데 포인터의 가리키는 주소를 바꿀수 있는게 이상하네요..
오류가 안나서이상함 ㅠ
위에는 제가 더블포인터 사용예를 주석처리하고 일반포인터로 call-by-reference 형태로
가리키는 주소를 변경한 것입니다.. 그런데 완포인트로도 다음과 같이 충분히 가능한데
더블포인터를 쓰는 이유가 먼가요??
-
갈기슭
void pswap(int* p1, int* p2)
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void pswap(int** p1, int** p2)
{
int* temp = *p1;
*p1 = *p2;
*p2 = temp;
}
즉, 위에는 값을 복사하는 코드고 아래는 포인터의 위치만 바꾸어 주는 코드가 됩니다. -
든솔
이 코드는 논리적 오류를 가지고 있어 의도한 바와 다르게 동작하고 있습니다만, 그것은 C++ 의 최대 장점이자 단점입니다. 즉, 원시적인 형태로 포인터를 주무를 수 있도록 이와 같은 동작을 c/c++ 이 용납한다는 점입니다.
-
희선
crm8// \포인터는 일종의 배열입니다\ 부분이요, \배열은 일종의 포인터입니다\ 를 잘 못 쓰신것 같아여;
매니저// pswap 을 int* 로 사용하시려면 안에 temp 는 int temp; 와 같이 정의되어야 할 것 같습니다. -
하늘이
대충 감? 이 옵니다^^ 헤헤 다른경우에서는 오류가 날듯 하네요 감사합니다^^
-
뭘봐요
일단 포인터 개념부터...
포인터는 일종의 배열인거 아시죠?
더블포인터는 2차원배열인거죠...
즉, *p = p[] , **p = p[][] 인셈이죠...
대신 배열과 포인터의 차이는 선언시 길이의 지정을 하느냐 안하느냐 차이에요.
그래서 위에 소스에서는 바꿔도 별 문제가 없는거죠.
만약 변수 A나 B가 int형이 아닌 **char 였다면 안되겠죠.(안돌려봐서.... 추측임... ㅋㅋ)
대충 개념이 이러네요.. ㅎㅎ
해보시고, 제 답변에 문제 있음 댓글 -
새늘
수정했습니다^^
-
하연
말머리요? 다시한번 말씀좀 ㅠㅠ
-
하련솔
말머리가 빠졌네요.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2700452 | c언어에서... 자료형 구분.... (3) | 시내 | 2025-07-05 |
2700422 | 버전에 관해 질문 | 라온제나 | 2025-07-04 |
2700393 | mysql이 갑자기!!!!!!!!!!!!!!!에러가;; (2) | 소미 | 2025-07-04 |
2700359 | 3.0 ) SimpleButton 상태 강제 변경 (3) | 희선 | 2025-07-04 |
2700304 | ie8 전용핵 문의 (3) | 여자 | 2025-07-03 |
2700281 | 이런경우 어떻게 코딩해야 표준에 따르는건가요? (6) | 늘솜 | 2025-07-03 |
2700230 | 질문이여 ! | 뿡뿡몬 | 2025-07-03 |
2700205 | 액션스크립트책 좀 추천해주세요. (10) | 화이트캣 | 2025-07-02 |
2700173 | 자바 소스인데 어떤게 에러인지..? (1) | 호빵녀 | 2025-07-02 |
2700142 | 하단이 붙어있는 가변 레이아웃구조 질문드립니다. | 이플 | 2025-07-02 |
2700089 | 이미지를 사다리꼴로 비틀게 하는 액션코드가 있나요? (4) | 여름 | 2025-07-01 |
2700033 | 배경에 그라데이션을 넣으려고 하는데요.. (4) | 화이티 | 2025-07-01 |
2700005 | [질문] TextField 객체의 실제 높이 알아오는 방법 ? | 천사의눈물 | 2025-07-01 |
2699978 | FileReferenceList를 이용하여 업로드시 자꾸 실행속도가 느리다는 팝업이... (10) | 데이비드 | 2025-06-30 |
2699944 | 자바스크립트가 많은 사이트는... (6) | 희나리 | 2025-06-30 |
2699918 | 브라우저마다 다른 input과 텍스트 정렬 (3) | 늘봄 | 2025-06-30 |
2699887 | 동적텍스트를 그래픽으로?? (2) | 족장 | 2025-06-30 |
2699862 | scope넣기 (1) | 아인 | 2025-06-29 |
2699835 | exe로 만드는 방법을....알려주세요.. (5) | 방방 | 2025-06-29 |
2699809 | 롤오버할때 백그라운드 이미지로할때 alt설명은 어떻게해야하죠?..ㅠ (4) | 반혈 | 2025-06-29 |