Always Be Wise

이중 포인터와 포인터 배열 본문

프로그래밍 언어/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 = &num;
	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;
}

'프로그래밍 언어 > C' 카테고리의 다른 글

typedef를 이용한 구조체 선언  (0) 2021.12.04
구조체란?  (0) 2021.12.04
상수 포인터  (0) 2021.12.04
포인터 연산과 배열  (0) 2021.12.04
Call by value & Call by reference  (0) 2021.12.04
Comments