다중 포인터어느 정도 포인터의 개념이 익숙해졌다면, 다중 포인터에 대하여 알아보겠습니다. 다중 포인터란 포인터를 담는 포인터의 개념입니다. 포인터를 정확하게 이해하고 있으면 다중 포인터의 개념을 이해하는 데는 문제가 없을 것입니다. 다중 포인터의 선언과 사용 해기 보기다중 포인터는 포인터 변수를 선언하는 *의 개수로 몇 중 포인터인지 선언을 합니다. 예를 들어 2중 포인터의 선언은 다음과 같습니다.
3가지 변수에 대하여 특징을 다시 한번 정리해 보자면 다음과 같습니다.
다중 포인터의 장점포인터와 다중포인터의 개념을 이해했다면 왜 쓰는지 알아야 됩니다. 포인터의 경우 여러 지역변수를 다른 함수에서 제어할 수 있는 장점이 있다고 했습니다. 그렇다면 다중 포인터는 어떤 장점이 있을까요? 어떤 지역 내에 선언된 포인터 변수를 다른 함수에서 제어할 수 있게 됩니다.
이해가 되셨나요? 2중 포인터를 함수의 매개변수로 사용한다면 다른 함수에 있는 포인터 변수에 저장된 메모리 주소를 제어를 할 수 있는 장점이 생깁니다. 이런 기능들을 이용해 함수와 함수 사이에서 조금 더 데이터를 원활하게 관리할 수 있습니다. 앞서 간단하게 포인터란 무엇인지, 예제를 통해 설명. https://ansan-survivor.tistory.com/1237 [C언어] 포인터란? 포인터에 대해 쉽게 이해하기. (포인터 변수 사용하기, 포인터로 값 변경하기, (알아두기) 컴퓨터는 32비트와 64비트를 많이 사용한다. 이는 1번 처리에 사용할 수 있는 메모리의 크기이다. 만약 32비트(4byte) PC라면, 8 byte를 할당해도 저장할 수 있는 공간은 4byte 뿐이다. 나머지 ansan-survivor.tistory.com 보통 일반적으로 많이 사용되는 것은, * 하나만을 사용하는 "싱글포인터"이다. 때로는 필요에 의해 포인터에서 또다른 포인터로 참조를 하는 더블포인터, 또 더 참조하면 트리플포인터 까지 사용된다. 위와 같은 다중포인터에 대한 예제. 1. double* ptr = # => ptr의 타입은 double* 으로 num의 주소값을 저장. 2. double* *dptr = &ptr; => dptr은 double* 타입인 ptr이 대입되므로, *을 하나 더 붙여 double** 으로 만듦
위와 같은 참조 관계가 구성되어있기 때문에, num의 값을 새로운 포인터변수로 바꿔주면 모두 바뀌게 된다. 새로운 ptr2를 선언해서 num의 주소값을 넣고 값을 5.2를 대입해보기 모두 num을 참조하기 때문에 다 바뀌게 되었다.가리키고 있는 대상의 주소값을 확인하기 모두 한곳을 가리키고 있다.포인터 변수 연산 이해 과정. 아래와 같이 괄호를 활용해서 연산 순서를 이해해보면 더 이해를 잘할 수 있다. |