포인터의 개념
- 변수는 그 자체로 자신의 자료형에 맞는 값을 저장한다.
- 포인터(Pointer) 변수는 특이한 변수로, 메모리 주소를 저장한다.
- 포인터는 특정한 변수 자체가 존재하는 메모리 주소값을 가진다.
+ int a = 5; 의 주소값 : 0xAFB03954
int *b = &a; 의 값 : a의 메모리 주소 0xAFB03954
int *b 도 변수이기때문에 주소값을 가진다.
- int *b = &a;에서 *(포인터 변수 선언)은 포인터 변수임을 알려주기 위한 목적이다.
&는 변수 앞에 붙어서 변수의 메모리 시작 주소값을 구한다.
- 따라서 위에 *b는 5라는 값 자체가 된다.
- *(간접참조연산자) : 현재 포인터가 가르키고있는 주소에 들어있는 값을 참조한다.
실습내용
실습결과
- 실제로 int a = 5; 와 같이 변수를 할당하면 메모리 주소상에서는 4Byte를 차지한다.
+ 메모리주소를 한칸에 1Byte씩 표현한다면 4칸을 차지한다.
실습내용 : 배열 각 원소의 주소 값 출력하기
십습결과 : 주소값이 4씩 증가하는것을 확인할 수 있다.
포인터의 강력한 기능
- 포인터는 컴퓨터 시스템의 특정한 메모리에 바로 접근할 수 있다.
- 기존에 존재하던 중요한 메모리 영역에 접근하지 않도록 해야한다.
+ int *a = 0x1234123;
*a = 0;
이렇게 구현한다면 메모리 0x1234123가 무슨 일을하는지 모르기에 위험하다.
다중포인터
- 포인터의 포인터도 존재할 수 있다.
- 포인터도 메모리에 기록되는변수이다.
- 포인터를 여러개 겹칠 수 있다.
실습내용
실습결과
배열과 포인터관계
- 배열과 포인터는 사실 동일하다.
- 배열을 선언한 이후에는 그 이름 자체를 포인터 변수처럼 쓸 수 있다.
포인터(핵심)
- 포인터는 특정한 변수가 메모리 상에 존재하는 위치 주소를 저장한다.
- 포인터는 특정한 메모리 주소에 바로 접근할 수 있으므로 조심스럽게 사용해야한다.
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
C언어 코딩 컴퓨터 변수 처리방식(전역변수,지역변수,매개변수) (0) | 2018.12.17 |
---|---|
C언어 코딩 문자,문자열 (0) | 2018.12.17 |
C언어 코딩 함수,재귀함수,배열 (0) | 2018.12.14 |
C언어 코딩 조건문,반복문 (0) | 2018.12.13 |
C언어 코딩 연산자 (0) | 2018.12.13 |