이중포인터, 배열 포인터
2022. 12. 26. 16:41ㆍC언어/기본 개념
728x90
이중포인터
포인터도 메모리에 저장 공간을 갖는 하나의 변수이다. 주소를 가지고 있는 포인터의 주소도 구할 수 있다. 이 주소를 가지고 있는 포인터가 이중포인터이다. (포인터의 주소는 이중 포인터에 저장)
int a = 10; int* pi; int** ppi; pi = &a; ppi = π |
변수 변숫값 &연산 *연산 **연산 |
a 10 100 pi 100 200 10 ppi 200 300 100 10 |
배열포인터
int ary[5] ary 값 : 4159700136 ary 주소 : 4159700136 ary +1 : 4159700140 &ary +1 : 4159700156 |
ary 값은 +1을 했을 때 4증가하고 주소 값의 +1을 했을 경우 20바이트가 증가한다.
배열전체의 시작 주소값을 배열 포인터라고 한다.
int a[5]; int (*p)[5] = &a; (*pa)[0] = 10; // a[0]하고 같은 의미 p+1 // a주소가 100일 경우 120 |
위 코드는 포인터 변수 p는 자료형이 int 5형이라는 뜻이다. 그 변수에는 a의 주소 값을 대입하고 그 주소는 a의 전체 값을 의미한다.(a[0]이 아님)
2차원 배열과 배열 포인터
배열 포인터를 매개변수에 쓰면 함수에서 2차원 배열처럼 사용이 가능하다.
int a[3][4]; *(a + 1); // a[1]과 동일 (*(a + 1)) + 2 = 10; //a[1][2] = 10과 동일 |
포인터를 선언 할 때는 기본적으로 변수 앞에 *을 사용한 후 집어 넣을 값의 자료형을 작성해주면된다.
ex. int a;
pa > *pa > int *pa
ppa > *ppa > int **ppa
728x90
'C언어 > 기본 개념' 카테고리의 다른 글
동적 할당 함수 (0) | 2023.02.08 |
---|---|
함수 포인터와 void 포인터 (0) | 2023.02.07 |
[C] 다차원 배열 (0) | 2022.12.02 |
[C] 변수 영역 (0) | 2022.12.01 |
[C] 문자열 (0) | 2022.11.28 |