포인터 변수의 선언과 사용 — 자료형 *이름 선언·주소 저장·역참조와 두 가지 * | 기초 C언어 10.2.1
기초 C언어Chapter 10 포인터 › Section 02 포인터 변수와 포인터의 활용
10.2.1 포인터 변수의 선언과 사용
주소 값 자체를 저장하는 포인터 변수. 선언 형식, 주소 저장과 역참조의 두 단계, 같은 기호 *의 두 가지 의미를 정리함.
영상 목차 · 원하는 부분부터 보기
01주소를 담아 두는 변수교재 302p
- 앞 편에서는 &로 변수의 주소를 알아내고 *로 값을 꺼냈지만, 구한 주소를 어디에도 담아 두지 않았음.
- C언어는 메모리 주소 값 자체를 저장하는 특별한 변수를 제공. 이것이 포인터 변수(Pointer Variable), 간단히 포인터.
- 일반 변수가 ‘집’ 자체라면 포인터 변수는 ‘집의 주소가 적힌 쪽지’. 실제 데이터 값이 아니라 데이터가 있는 위치(주소)를 가리킴(point).
02선언 형식 — 자료형 *포인터_변수이름;교재 303p
- 일반 변수와 비슷하게 선언하되 이름 앞에 애스터리스크(*)를 붙여 구분.
- 자료형은 포인터가 가리킬 변수의 자료형. ‘어떤 종류의 집 주소’를 저장할지 밝히는 부분.
- *는 이 변수가 주소를 저장하는 포인터 변수임을 컴파일러에게 알리는 기호.
| 선언 | 저장하는 주소 |
|---|---|
| int *p_int; | int형 변수의 주소 |
| double *p_double; | double형 변수의 주소 |
| char *p_char; | char형 변수의 주소 |
int *p_int;는 ‘p_int는 int형 변수를 가리키는 포인터’로 읽음. 세 선언에서 달라지는 것은 가리킬 변수의 자료형뿐.
03사용은 주소 저장과 역참조 두 단계교재 303p
- 주소 저장 — & 연산자로 다른 변수의 주소를 포인터 변수에 대입. 예:
p = #이후 p는 num을 가리킴. - 역참조 — * 연산자로 포인터가 가리키는 주소에 저장된 실제 값에 접근. 예:
*p. - 앞 편의 *(&score)와 같은 일을 이번에는 주소를 담아 둔 포인터 p를 거쳐서 수행하는 구조.
04포인터로 num의 값 바꾸기교재 304~305p
- CODE 10.3 — num을 10으로 초기화하고 p에 num의 주소를 저장한 뒤,
*p = 20;으로 값을 바꾸는 구성. 상세 코드는 교재 CODE 10.3. - 결과에서 num과 *p는 모두 10, &num과 p에는 같은 주소. 값을 바꾸는 문장에 num이 없는데도 마지막 출력의 num은 20.
- p라는 쪽지에 num의 집 주소를 적고, 그 주소로 찾아가 집 안의 값을 바꾼 결과. 주소를 통하면 멀리 떨어진 곳에서도 원본 데이터를 읽고 수정 가능.
05*p는 num 칸 자체교재 305p
- 4.2.2에서 등호 왼쪽에는 변수가 온다고 했고 8.1.2에서 배열 요소까지 넓힘. *p도 num이라는 칸 자체를 나타내므로 등호 왼쪽에 올 수 있음.
- num과 *p는 두 이름이 같은 공간을 가리키는 관계. 어느 쪽으로 바꾸어도 같은 칸의 값이 바뀜.
06같은 기호 *의 두 가지 의미교재 305p
선언의 *와 역참조의 *를 혼동하지 말 것
int *p;의 *는 p가 포인터 변수라는 표시. *p = 20;의 *는 p가 가리키는 주소로 찾아가 그 위치의 값을 사용하라는 뜻. 선언할 때 이름 앞에 붙으면 선언의 *, 선언을 마친 포인터 앞에 붙으면 역참조의 *로 쓰이는 위치에 따라 의미가 다름.
- 포인터로 멀리 있는 변수의 값을 바꿀 수 있게 되었으므로 9장에서 막혔던 문제를 풀 준비가 됨. 다음 10.2.2에서는 값에 의한 호출 예제부터 다시 살펴볼 예정.
이 절의 핵심 정리
- 포인터 변수는 메모리 주소 값 자체를 저장하는 변수로, 집의 주소가 적힌 쪽지와 같다.
- 포인터 변수는 자료형 *포인터_변수이름; 형식으로 선언하며 자료형은 가리킬 변수의 자료형이다.
- &로 다른 변수의 주소를 포인터에 저장하고 *로 그 주소에 저장된 값에 접근한다.
- *p = 20;처럼 포인터를 역참조해 대입하면 포인터가 가리키는 원본 변수의 값이 바뀐다.
- 선언의 *는 포인터 변수라는 표시이고 역참조의 *는 가리키는 주소의 값을 사용하라는 뜻이다.
강의 자료10.2.1 포인터 변수의 선언과 사용
1 / 12
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기