http://www.yes24.com/Product/Goods/74269921
혼자 공부하는 C 언어 - YES24
혼자 해도 충분하다! 1:1 과외하듯 배우는 C 프로그래밍 자습서이 책은 독학으로 C 언어를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학
www.yes24.com
#include <stdio.h>
int main()
{
int a = 10;
int *pi;
int **ppi;
pi = &a;
ppi = π // 포인터의 주소를 저장한 이중 포인터
}
첫 번째 별은 ppi가 가리키는 자료형이 포인터임을 뜻하며 두 번째 별은 ppi 자신이 포인터임을 뜻합니다.
이중 포인터를 선언하여 메모리에 저장 공간이 할당되면 그 이후에 이중 포인터를 사용할 때는 변수명을 씁니다.
- 포인터를 변수명으로 쓰면 그 안의 값이 됩니다.
- 포인터에 & 연산을 하면 포인터 변수의 주소가 됩니다.
- 포인터의 * 연산은 화살표를 따라갑니다.
결국 이중 포인터 ppi로 변수 a 값을 사용하려면 간접 참조 연산자를 두 번 써야 합니다. ppi로 변수 a 값을 사용하려면 간접 참조 연산자를 두 번 써야 합니다. ppi가 가리키는 것은 포인터 pi 이므로 ppi에 간접 참조 연산을 수행하면 pi가 됩니다. 따라서 포인터 pi가 가리키는 변수 a 값을 쓰려면 간접 참조 연산자를 한 번 더 사용해야 합니다.
포인터는 변수이므로 주소 연산자를 사용하여 그 주소를 구할 수 있지만 상수인 주 소에는 주소 연산자를 쓸 수 없습니다.
주소와 포인터의 차이
int a;
int *pi = &a; // 주소를 포인터에 저장
π // 포인터에 주소 연산자 사용 가능
&(&a); // a의 주소에 다시 주소 연산자 사용 불가능
다중 포인터
이중 포인터도 변수이므로 주소 연산자를 사용하면 그 주소를 구할 수 있습니다. 만약 이중 포인터가 가리키는 자료형이 double 포인터일 때 이중 포인터를 가리키는 3중 포인터는 다음과 같이 선언합니다.
double ***ppp;
'프로그래밍언어 > C 언어' 카테고리의 다른 글
[혼자 공부하는 C언어] 이중 포인터 활용 2 : 포인터 배열을 매개변수로 받는 함수 (0) | 2022.12.13 |
---|---|
[혼자 공부하는 C언어] 이중 포인터 활용 1 : 포인터 값을 바꾸는 함수의 매개변수 (0) | 2022.12.13 |
[혼자 공부하는 C언어] 2차원 배열처럼 활용하는 포인터 배열 (0) | 2022.12.13 |
[혼자 공부하는 C언어] 포인터 배열 선언과 사용 (0) | 2022.12.13 |
[혼자 공부하는 C언어] 3차원 배열 (0) | 2022.12.13 |