반응형
포인터에 관한해서.
https://ansan-survivor.tistory.com/1237
더블포인터에 관해서.
https://ansan-survivor.tistory.com/1288
더블포인터의 swap 예제.
#include <stdio.h>
/*
더블포인터 **ptr
더블 포인터를 이용해
swapIntptr 함수 만들기.
num1 -> num2 값으로,
num2 -> num1 값으로,
*/
// 주소값의 인자를 받기 위해
// (*p1)의 자료형 int*, ptr1에 저장하기 위해서는 자료형이 같아야 한다.
void SwapIntPtr(int* * p1, int* * p2)
{
int * temp = *p1; // *p1 = ptr1 을 의미, ptr1의 주소를 temp에 저장.
*p1 = *p2; // ptr2의 주소를 ptr1에 저장.
*p2 = temp; // *p2 = ptr2 이고, ptr2의 자료형은 (int *) 이므로 temp의 자료형과 같아서 대입 가능.
}
int main()
{
int num1 = 10, num2 = 20;
int * ptr1 = NULL;
int * ptr2 = NULL; // 포인터 초기화
ptr1 = &num1, ptr2 = &num2;
SwapIntPtr(&ptr1, &ptr2); // 함수를 통해 값을 변경하려면, 그 주소값을 인자로 전달해야함.
/*
즉, p1 -> ptr1 -> num1 을 가리키고,
p2 -> ptr2 -> num2 를 가리킴.
*/
printf("num1: %d\n num2: %d \n", *ptr1, *ptr2);
return 0;
}
반응형
(결과)
반응형
'C언어 \ C++ > 포인터 \ 배열' 카테고리의 다른 글
[C언어] 함수포인터 (함수형 포인터) 이해하기 예제 (0) | 2022.02.20 |
---|---|
[C언어] 포인터 배열, 이중포인터 배열 예제 (배열 내 포인터값을 사용할 경우) (0) | 2022.02.19 |
[C언어] 포인터의 포인터 (더블 포인터, 이중 포인터, 삼중 포인터) 이해하기 예제 (2) | 2022.02.19 |
[C언어] C언어 3차원 배열 선언 및 초기화 (0) | 2022.02.09 |
[C언어] C언어 2차원 배열 선언 및 초기화 (0) | 2022.02.08 |