챕터가 남았는데 마지막 미션이라는게 아쉽다..
// 각 변수에 해당하는 메모리를 접근 (시작 주소값 저장)
char *pc;
int *pi;
double *pd;
주소 연산자 &
변수가 할당된 메모리의 위치
int a; // 정수형 변수 a
&a; // a의 메모리 시작 주소 값
간접 참조 연산자 *
포인터로 가리키는 변수를 사용할 때
*pi = 10; // pi 변수의 포인터를 사용
// pi 포인터가 가리키는 변수를 사용
포인터
: 주소를 저장하는 일정한 크기의 메모리 공간
변수처럼 다른 주소를 저장하거나 포인터끼리 대입 가능
하지만 대입 연산 기준이 엄격함
주소
: 변수에 할당된 메모리 저장 공간의 시작 주소 값
포인터의 크기
: 주소의 크기와 같음
포인터의 대입 규칙
1) 포인터는 가리키는 변수의 형태가 (자료형) 같을 때만 대입
2) 형 변환을 사용한 포인터의 대입은 언제나 가능
포인터의 주요 기능
: 함수 간에 효과적으로 데이터를 공유하는 것
ex) 메모리에 직접 접근하는 경우, 동적 할당한 메모리를 사용하는 경우
Lang 시의 주민 주소록 번호
.
.
.
11. 코드 아파트 101동 207호 사는 아무개
12. 코드 아파트 105동 310호 사는 파파야
13. 컴파일로 1024길 10에 사는 모모
.
.
.
변하지 않는 값인 "코드 아파트 --동 --호, 컴파일로 1024길 10" 등을
= 주소
주소를 가지고 있는 "주소록 번호"를
= 포인터
"Lang 주민 아무개씨는 어디 사세요?"
= Lang *11
"컴파일로 1024길 10에는 누가 사나요?"
= &13
"파파야씨는 이사가고 파파야씨 사는 곳에 무무개씨가 이사왔어요"
= *12 = 무무개
"Java 시로 이사간 파파야씨 주소를 찾을 수 있나요?"
= (자료형 에러)
= Lang 시 주소록에 없기 때문에 찾을 수 없습니다.
(비유가 적절하지 않을수도 있지만..)
변수를 각각의 주민
주민이 살고있는 곳을 표시하는 문자를 주소
주소를 담고있는 주소록을 포인터
정도로 생각하면서 포인터를 이해했습니다..!