[포인터의 포인터]
[포인터의 포인터]
포인터도 메모리 공간에 올라가기에 주소값을 가지고 있다.
싱글 포인터의 주소값을 저장하는 용도의 포인터를 더블 포인터라 한다.
int a=3;
int* b = &a; //싱글 포인터
int **c=*b; //더블 포인터
[Swap 1 : 효과없는 swap 함수의 호출 ()]
값을 복사하여 바꾸기에 변경이 일어나지 않는다.
void pSwap(int * p1 ,int * p2)
int main(void)
{
int a=10,b=20;
int*pa,int*pb;
pa=&a,pb=&b;
pSwap(pa,pb);
}
void pSwap(int *p1,int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
[Swap 2 : 더블 포인터 swap 함수의 호출 ]
참조로 바꾸기에 실질적 변경이 일어난다
void pSwap(int * p1 ,int * p2)
int main(void)
{
int a=10,b=20;
int*pa,int*pb;
pa=&a,pb=&b;
pSwap(&pa,&pb);
}
void pSwap(int **p1,int **p2)
{
int *temp;
temp=*p1;
*p1=*p2;
p2=temp;
}
[포인터 배열과 포인터 타입]
1차원 배열의 경우 배열 이름이 가리키는 대상을 통해서 타입이 결정!
포인터 배열 역시 마찬가지 이다.
double* arr[10]
//해당 이름 arr은 배열의 첫번째 값을 가리키는 더블 포인터
double** arr이다.