프로그래밍 언어/C
이중 포인터와 포인터 배열
bewisesh91
2021. 12. 4. 13:29
728x90
이중 포인터는 포인터의 주소 값을 담는 변수로, 포인터의 포인터라고 할 수 있다.
아래 코드에서 ptr에 num의 주소 값을 대입하고, pptr에는 ptr의 주소 값을 대입했다. 참조 연산자는 포인터가 가리키고 있는
변수의 값을 나타낸다. 이중 포인터는 그 포인터가 가리키고 있는 곳으로 가서, 또 그 포인터가 가리키는 주소로 찾아가서 그 변수의
값을 나타낸다.
#include <stdio.h>
int main()
{
int num = 10;
int *ptr;
int **pptr;
ptr = #
pptr = &ptr;
printf("num : %d, *ptr : %d, **ptr : %d\n", num, *ptr, **pptr);
// num : 10, *ptr : 10, **ptr : 10
printf("num 주소 : %d, ptr 값 : %d, **ptr 값 : %d\n", &num, ptr, *pptr);
// num 주소 : -741557916, ptr 값 : -741557916, **ptr 값 : -741557916
printf("ptr 주소 : %d, pptr 값 : %d", &ptr, pptr);
// ptr 주소 : -741557912, pptr 값 : -741557912
return 0;
}
포인터를 담은 배열을 포인터 배열이라 한다. 참조 연산자를 붙인다는 것만 빼면 일반 배열과 동일하게 선언하며, 대입할 때는 변수의
주소 값을 넣는다.
#include <stdio.h>
int main()
{
int num1 = 10, num2 = 20, num3 = 30;
int *parr[3];
parr[0] = &num1;
parr[1] = &num2;
parr[2] = &num3;
for(int i=0; i<3; i++)
{
printf("parr[%d] : %d\n", i, *parr[i]);
}
return 0;
}