본문 바로가기

카테고리 없음

17장 . 포인터의 포인터

[포인터의 포인터]

[포인터의 포인터]

 

포인터도 메모리 공간에 올라가기에 주소값을 가지고 있다.

싱글 포인터의 주소값을 저장하는 용도의 포인터를 더블 포인터라 한다.

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이다.