포인터(pointer)
가리키는(point) + 사람(er)이라는 개념이고, 또 하나의 변수라고 생각하면 된다.(변수를 가리키는 변수)
ex) 이중 포인터 : 가리키는 사람을 가리키는 사람
n중 포인터 : 가리키는 사람을 가리키는 사람을 가리키는 사람을 가리키는 사람 ... 사람
포인터 사용

널 포인터
- 아무것도 가리키지 않는 포인터
int* ptr = NULL;
int a = *ptr; // Error
배열과 포인터의 관계
```c
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
```
1. arr + 1의 경우
- 포인터 타입: int (*)[3] (3개의 int를 가진 배열을 가리키는 포인터)
- 증가량: 12바이트 (4바이트 * 3)
- 의미: 다음 행의 시작 주소로 이동
- 이동: 첫 번째 행에서 두 번째 행으로
2. &arr + 1의 경우
- 포인터 타입: int (*)[3][3] (3x3 배열 전체를 가리키는 포인터)
- 증가량: 36바이트 (4바이트 * 9)
- 의미: 현재 배열 전체를 건너뛴 위치로 이동
- 이동: 현재 배열의 마지막 요소 다음 위치로
핵심 차이점은 arr은 행을 가리키는 포인터이고, &arr은 배열 전체를 가리키는 포인터라는 점입니다.


구조체
- 단순 데이터 덩어리
- 멤버 변수의 메모리 크기의 총합만큼 메모리를 차지한다.





'ProgramingLagnuage > C' 카테고리의 다른 글
| [c언어] - 테트리스 게임 설계 (7) | 2024.08.30 |
|---|---|
| memcpy or 대입을 통한 데이터 복사 (0) | 2024.08.27 |