표준 입력과 scanf — 숫자 입력과 주소 연산자 | 기초 C언어 4.3.1-4.3.2
기초 C언어Chapter 04 변수 › Section 03 표준 입력 (scanf) › 01~02
4.3.1~4.3.2 표준 입력과 scanf
코드에 값을 미리 적어 두는 대신 사용자가 직접 넣게 하는 법. 그리고 변수 이름 앞에 & 를 붙이는 까닭.
강의 영상 YouTube에서 보기 ↗ · TECH79 | C언어 강의실
01표준 입력 — 값을 받는 기본 통로교재 101p
- 입력(Input) — 프로그램이 실행되는 도중에 바깥에서 데이터를 받아들이는 과정. 결과를 보여 주는 출력(Output)과 반대되는 개념.
- 표준 입력(Standard Input, stdin) — 별다른 설정이 없을 때 프로그램이 데이터를 받는 기본 통로. 콘솔 환경에서는 키보드.
- 코드에 미리 적어 둔 값이 아님 — 실행 중에 사용자가 넣으므로 실행할 때마다 다른 값이 들어감.
02scanf — 바깥의 값을 변수 안으로교재 102p
- printf — 변수 안의 값을 밖으로 꺼내 보임. scanf — 그 반대로 바깥의 값을 변수 안으로 집어넣음.
- 기본 꼴 — 괄호 안에 넘겨 주는 것은 큰따옴표로 감싼 변환 지정자와 & 를 붙인 변수 이름, 두 가지뿐임.
scanf("변환지정자", &변수이름);
03변환 지정자 — 받을 숫자의 종류교재 102p
| 지정자 | 입력받는 값 |
|---|---|
| %d | 10진수 정수 — int 형 변수에 받을 때 |
| %f | 소수점이 있는 실수 — float 형 변수에 받을 때 |
- 출력 때 쓰던 바로 그 기호이나 이번에는 값이 들어오는 쪽에 붙음 — 받는 변수의 자료형과 짝을 맞추는 일이 더 중요해짐.
04주소 연산자 & — 값을 넣을 자리교재 102p~103p
- 주소 연산자(Address-of Operator) — 변수 이름 앞에 붙어 「이 변수가 저장된 메모리의 주소」라는 뜻. &age — age 변수의 주소.
- 택배 — 집 안의 물건이 아니라 배송받을 집 주소를 알려 주어야 함. scanf 도 변수의 내용물이 아닌 메모리 주소를 받음.
scanf("%d", &age);
여기서 자주 틀림
scanf 에서 가장 헷갈리는 자리 — & 의 유무. printf 는 값을 꺼내는 일이라 변수 이름만 적으면 되지만, scanf 는 넣을 자리를 알려 주어야 하므로 변수 이름 앞에 반드시 & 를 붙임. 이것 하나를 빠뜨려 프로그램이 엉뚱하게 도는 일이 가장 흔함.
전체 코드와 줄별 해설은 교재 103p~104p CODE 4.8 에 있습니다.
05scanf 를 만나면 잠시 멈춤교재 104p
- 멈춤 → 입력 → 엔터 → 저장 — 실행이 scanf 에 닿으면 그 자리에서 멈춰 다음 줄로 넘어가지 않음.
- 친 글자는 엔터를 누를 때까지 화면에만 머무름 — 엔터 전까지는 지우고 다시 쳐도 됨.
- 엔터 뒤 scanf 가 값을 읽어 & 로 알려 준 주소에 찾아가 저장함.
이 절의 핵심 정리
- 표준 입력은 설정이 없을 때 프로그램이 데이터를 받는 기본 통로, 곧 키보드다.
- printf가 값을 꺼내 보인다면 scanf는 바깥의 값을 변수 안으로 집어넣는다.
- 기본 꼴은 scanf("변환지정자", &변수이름); 두 가지만 넘긴다.
- %d는 int 정수, %f는 float 실수를 받는다.
- & 는 값을 저장할 메모리 주소를 뜻하며, 빠뜨리면 프로그램이 엉뚱하게 돈다.
강의 자료4.3.1~4.3.2 표준 입력과 scanf
1 / 11
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
댓글
댓글 쓰기