포인터의 기초 — 메모리·바이트·메모리 주소와 변수 이름의 연결 | 기초 C언어 10.1.1
기초 C언어Chapter 10 포인터 › Section 01 포인터와 메모리 주소
10.1.1 포인터의 기초
주소를 저장하는 변수, 포인터로 가는 첫걸음. 메모리를 바이트 단위 칸으로 보고 칸마다의 고유 주소와 변수 이름의 연결을 정리함.
영상 목차 · 원하는 부분부터 보기
01값에 의한 호출의 한계에서 출발교재 296p
- 9장의 값에 의한 호출은 변수에 담긴 값만 복사해서 전달하는 방식. 함수 안에서 무엇을 바꾸어도 main 함수의 원본은 그대로였음.
- 함수가 원본 변수에 접근하게 하려면 C언어의 중요한 기능인 포인터(Pointer)의 이해가 필요. 그 첫걸음이 메모리 주소의 개념.
- 4.3.1에서 scanf 앞에 붙인
&, 곧 택배의 받는 주소처럼 값을 넣을 자리를 알려 준 표시도 이 장에서 정체가 드러남.
02포인터는 주소를 저장하는 변수교재 296p
- 포인터 — C언어에서 메모리 주소를 저장하는 변수. 지금까지의 변수가 값을 담았다면 포인터는 주소를 담는 차이.
- 이 편에서 살펴볼 내용은 세 가지. 컴퓨터의 작업 공간인 메모리, 칸마다 가지는 고유 주소, 변수 이름과 주소의 연결.
03바이트 단위 칸으로 나뉜 메모리교재 296p
- 메모리(RAM) — 프로그램이 실행되는 동안 필요한 모든 데이터를 임시로 저장하는 거대한 작업 공간.
- 메모리 공간은 수많은 바이트(byte) 단위의 칸으로 나뉨. 교재는 메모리를 아파트 건물 전체, 1바이트를 각 호실에 빗댐.
| 컴퓨터 | 아파트 비유 |
|---|---|
| 메모리 | 아파트 건물 전체 |
| 1바이트 | 각 호실(101호, 102호, …) |
| 메모리 주소 | 호실마다 겹치지 않는 번호 |
04모든 바이트의 고유한 번호, 메모리 주소교재 297p
- 메모리의 모든 바이트 공간은 서로 겹치지 않는 고유한 번호를 가짐. 이 번호가 메모리 주소.
- 같은 번호의 칸은 둘이 없으므로 주소만 알면 정확히 그 칸을 찾아갈 수 있음.
- CPU는 주소 값을 사용해 특정 위치에 데이터를 저장하거나 읽어 옴. 주소 값은 보통
0x7ffeea289b4c처럼 16진수로 표현. - 앞머리의 0x는 3.3.1에서 다룬 16진수 표시. 4.1.1에서 변수의 위치로 잠깐 본 0x로 시작하는 값이 바로 이 메모리 주소.
05변수 이름은 주소에 붙인 별명교재 298p
int score;를 선언하면 컴퓨터가 하는 일은 두 가지. int에 필요한 크기(예: 4바이트)만큼 빈 공간을 확보하고, score라는 이름을 실제 메모리 주소와 연결함.- 코드에서 score를 쓰는 것은 실제로는 ‘그 주소 번지의 데이터를 사용해 달라’는 요청과 같음. 이 과정을 컴파일러가 자동으로 처리하므로 지금까지는 주소를 몰라도 이름만으로 변수를 사용함.
변수에는 이름과 주소가 함께 있음
이름은 사람이 쓰는 별명이고, 컴퓨터가 실제로 찾아가는 것은 주소. 4바이트 변수라면 확보한 공간의 첫 칸 주소부터 4바이트가 그 변수의 자리임. 값·이름·주소를 서로 다른 것으로 구분해 두어야 포인터가 헷갈리지 않음.
06값 대신 주소를 알려 준다면교재 298p
- 값에 의한 호출은 변수 안의 내용물(값)만 복사해서 전달. 값 대신 변수가 있는 메모리 주소 자체를 함수에 알려 주면, 함수는 그 주소를 찾아가 원본 값을 읽고 수정할 수 있음.
- 정리하면 메모리는 칸, 메모리 주소는 칸의 번호, 변수 이름은 번호에 붙인 별명, 포인터는 그 번호를 담는 변수라는 관계.
- 이 발상의 구체적인 방법은 10장의 이어지는 편에서 차례로 다룸. 다음 10.1.2에서는 주소를 알아내는
&와 주소로 값을 꺼내는*를 살펴볼 예정.
이 절의 핵심 정리
- 포인터는 C언어에서 메모리 주소를 저장하는 변수이다.
- 메모리는 프로그램 실행 중 데이터를 임시로 저장하는 공간이며 바이트 단위의 칸으로 나뉜다.
- 메모리의 모든 바이트는 서로 겹치지 않는 고유한 번호인 메모리 주소를 가지며, 주소는 보통 16진수로 표현한다.
- 변수를 선언하면 자료형 크기만큼 공간이 확보되고 변수 이름이 그 실제 주소와 연결된다.
- 값 대신 주소를 함수에 알려 주면 함수가 원본 변수의 값을 읽고 수정할 수 있게 된다.
강의 자료10.1.1 포인터의 기초
1 / 10
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기