메모리 종류
- Stack : 자동변수, 지역변수, 보통 1MB
- Heap : 동적 할당 메모리 -> Run 타임에 실행되는 메모리
- 실행 코드
- text section
- data section
포인터 변수
- 변수는 변수인데, 메모리의 주소를 집어넣는 변수
- 64bit 시스템에서 주소 상수, 포인터 변수는 모두 64 bit (8bytes)
-> char ch = 'a'; (문자 a를 저장)
char *pszData = &ch;
'a'가 들어간 이름이 ch인 메모리의 주소를 pszData에 저장.
이때 pszData의 이 이름 자체를 또 저장하는 메모리 공간이 있나?
직접 지정과 간접 지정
포인터와 1차원 배열
포인터 & 1차원 배열이 매우 유사함.
같이 자주 쓰임.
- 간접 지정 연산 (*)의 결과는 형식이 있는 변수로 생각할 수 있음.
포인터 변수나 배열 이름에 대해 덧셈, 뺄셈 연산 할 수 있음.
이때 덧셈 + 1은 주소값에 +1이 아닌, 한 개를 더 한다,
= 한 칸 주소를 이동한다라고 볼 수 있다.
포인터 변수에 대해서는 단항 증/감 연산도 가능.