Notice
Recent Posts
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

One Step Two Step

[C언어 기초] 변수, 함수, 그리고 입출력 완벽 정리 본문

복습/C언어

[C언어 기초] 변수, 함수, 그리고 입출력 완벽 정리

DEVILOW 2026. 2. 24. 23:59
반응형
  • 주석 (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);
}
반응형