One Step Two Step
[C언어 기초] 변수, 함수, 그리고 입출력 완벽 정리 본문
반응형
- 주석 (Comment): 코드를 설명하는 글
- Reminder / 주석을 읽고 함수가 무엇을 하는 함수인지 다른 개발자에게 알려줄 수 있음 / 코드 이해 ↑
/* 한 줄로 된 주석 */
/*
한글
영어
여러 줄로 이루어진 주석
*/
// 여기서부터 줄의 끝까지 주석
- 들여 쓰기 (Indentation): 같은 수준의 문장들을 오른쪽으로 몇 칸 밀어 써서 구조를 한눈에 파악.

- 함수 (function): 특정 기능을 수행하는 처리 단계들을 괄호로 묶어서 이름을 붙인 것 / 함수는 프로그램을 구성하는 기본적인 단위(부품)

- 변수 (Variable): 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간
- 변수 선언: 컴파일러에게 어떤 타입의 변수가 사용되는지를 미리 알리는 것
- 변수 초기화: 변수에 데이터를 저장하는 것

- 자료형 (Data Type): 변수가 저장할 데이터가 정수인지 실수인지, 아니면 또 다른 어떤 데이터인지를 지정하는 것
- unsigned: 음수가 아닌 값만을 나타냄을 의미
- signed: 부호를 가지는 값을 나타냄을 의미 / 흔히 생략
| 정수형 | 실수형 | 문자형 |
| short(2 byte) int(4 byte) long(4/8 byte) long long(8 byte) |
float(4 byte) double(8 byte) long double(8/16 byte) |
char(1 byte) |
- 식별자(Identifier): 변수나 함수의 이름
- 식별자 만드는 규칙
- 영어의 대소문자, 숫자, 밑줄 " _ "로 이루어진다
- 숫자로 시작 X
- 대소문자 구별 (apple과 Apple은 다름)
- 중복 선언 X
- 키워드(keyword) 사용 X☞ 키워드(keyword)란 C언어에서 고유한 의미를 가지고 있는 특별한 단어 예약어(reserved words)라고도 함 ( if, while, int, struct 등)
- 식별자 만드는 규칙
- 수식 (Expression): 연산자(+, - 등)와 피연산자(값, 변수)로 구성된 식이며, 항상 결과값을 가짐
- 대입 연산자(assignment operator) : "=", 변수에 값을 저장하는 연산
- 출력 및 입력
- printf(): 모니터에 출력을 하기 위한 표준 출력 라이브러리 함수
- scanf(): 키보드로부터 값을 받아서 변수에 저장
- 변수의 주소가 필요 → "&" 주소 연산자를 변수 앞에 붙임
- 형식 지정자: 입출력 함수에서 데이터의 “자료형과 출력/입력 형식”을 명시하는 기호
| 형식 지정자 | 의미 | 예 | 출력 실행 결과 |
| %d | 10진수 출력 10진수 입력 |
printf(“%d”, 100); scanf(“%d”, &tmp); |
100 |
| %o | 8진수 출력 8진수 입력 |
printf(“%o”, 100); scanf(“%o”, &tmp); |
144 |
| %x | 16진수 출력 16진수 입력 |
printf(“%x”, 100); scanf(“%x”, &tmp); |
64 |
| %f | 실수 출력 실수 입력 |
printf(“%f”, 3.14); scanf(“%f”, &tmp); (double → %lf) |
3.14 |
| %c | 문자 출력 문자 입력 |
printf(“%c”, 'h'); scanf(“%c”, &tmp); |
h |
| %s | 문자열 출력 문자열 입력 |
printf(“%s”, “Hello”); char tmp[10]; scanf(“%s”, tmp); |
Hello |
★ scanf 사용 시 주의해야 할 보안 경고(C4996)
scanf는 입력받는 데이터의 크기를 제한하지 않기에 정해진 메모리보다 더 큰 데이터를 입력하면 BOF(Buffer Overflow)라는 보안 취약점 발생
✅ 해결 방법 1: 전처리기 지시자 추가 (권장)
코드 맨 윗줄( stdio.h 보다 위)에 한 줄만 적
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int n; scanf("%d", &n); // 이제 에러 없이 실행됩니다. return 0; }✅ 해결 방법 2: scanf_s 사용
scanf() 대신 scanf_s()를 사용하 방법
※ 마이크로소프트 전용 함수라 다른 환경(리눅스, 맥, 온라인 코딩 테스트 등)에서는 코드가 작동 X
1. 직육면체의 가로, 세로, 높이를 입력 받아 부피, 겉넓이와 모든 모서리의 합을 구하는 프로그램
출력 예시)
Input w(idth), h(eight), l(ength) of cuboid: 5 4 3
Width of cuboid : 5
Height of cuboid : 4
Lenght of cuboid : 3
=====================
Volume of cuboid : 60
Surface area of cuboid: 94
Sumf of Edges: 48
더보기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int w, h, l;
printf("Input w(idth), h(eight), l(ength) of cuboid: ");
scanf("%d %d %d", &w, &h, &l);
printf("Width of cuboid : %d\n", w);
printf("Height of cuboid : %d\n", h);
printf("Lenght of cuboid : %d\n", l);
printf("=====================\n");
printf("Volume of cuboid : %d\n", w * h * l);
printf("Surface area of cuboid: %d\n", 2 * (w * h + h * l + l * w));
printf("Sumf of Edges: %d\n", 4*(w+h+l));
}
OR
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int w, h, l;
int volume, surface, sumf;
printf("Input w(idth), h(eight), l(ength) of cuboid: ");
scanf("%d %d %d", &w, &h, &l);
volume = w * h * l;
surface = 2 * (w * h + h * l + l * w);
sumf = 4 * (w + h + l);
printf("Width of cuboid : %d\n", w);
printf("Height of cuboid : %d\n", h);
printf("Lenght of cuboid : %d\n", l);
printf("=====================\n");
printf("Volume of cuboid : %d\n", volume);
printf("Surface area of cuboid: %d\n", surface);
printf("Sumf of Edges: %d\n", sumf);
}
반응형
'복습 > C언어' 카테고리의 다른 글
| [C언어 기초] 반복문 "while" / "do...while" / "for" (0) | 2026.02.28 |
|---|---|
| [C언어 기초] "if", "switch" 그리고 "goto"라는 조건문 (0) | 2026.02.27 |
| [C언어 기초] 수식과 연산자 (0) | 2026.02.26 |
| [C언어 기초] 데이터의 한계와 상수, 그리고 메모리 속의 숫자들 (0) | 2026.02.25 |
| [C언어 기초] 01. Hello World 출력과 코드 구조 완벽 이해하기 (0) | 2026.02.23 |