*파이썬과 C언어의 함수 비교

항목 Python 함수 C언어 함수
함수 선언 키워드 def 자료형 사용
자료형 선언 필요 없음 반드시 필요
코드 블록 구분 들여쓰기 { } 중괄호
반환값 선언 자동 처리 반환 자료형 명시
문법 난이도 쉬움 상대적으로 복잡
실행 속도 비교적 느림 빠름
메모리 제어 자동 개발자가 직접 관리
초보자 난이도 쉬움 어려움
사용 분야 AI, 데이터분석, 자동화 시스템, 게임, 임베디드

 

 

*테트리스 게임 코드

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <windows.h>

#define W 10
#define H 20

int map[H][W];
int x = W / 2, y = 0;

void draw()
{
system("cls");

for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {

if (i == y && j == x)
printf("■");
else if (map[i][j])
printf("■");
else
printf(" .");
}
printf("\n");
}

printf("\nA:왼쪽 D:오른쪽 S:빠르게\n");
}

int collision(int nx, int ny)
{
if (nx < 0 || nx >= W || ny >= H)
return 1;

if (map[ny][nx])
return 1;

return 0;
}

void clearLine()
{
for (int i = H - 1; i >= 0; i--) {

int full = 1;

for (int j = 0; j < W; j++) {
if (!map[i][j]) {
full = 0;
break;
}
}

if (full) {

for (int k = i; k > 0; k--) {
for (int j = 0; j < W; j++) {
map[k][j] = map[k - 1][j];
}
}

for (int j = 0; j < W; j++)
map[0][j] = 0;

i++;
}
}
}

int main()
{
while (1) {

draw();

if (_kbhit()) {

char key = _getch();

if (key == 'a' && !collision(x - 1, y))
x--;

if (key == 'd' && !collision(x + 1, y))
x++;

if (key == 's' && !collision(x, y + 1))
y++;
}

Sleep(300);

if (!collision(x, y + 1)) {
y++;
}
else {

map[y][x] = 1;

x = W / 2;
y = 0;

clearLine();

if (collision(x, y)) {
printf("\nGAME OVER\n");
break;
}
}
}

return 0;
}

 

 

+) 단축키

ctrl+M+O : 함수 단위 소스 접기

ctrl+M+L : 함수 단위 소스 펼치기

 

 

*argument/parameter, 리턴 값

- 출처: c언어 프로그래밍 강의 자료|한성현 교수님

 

 

*함수

- 특정한 작업을 하도록 만들어진 독립적인 단위 모듈

- 큰 프로그램 하나를 여러 개의 함수로 분할하여 구현하는 구조적인 프로그래밍 방식의 기본이다.

 

 

*main() 함수

int main()

{

    return 0;

}

- c언어의 main() 함수는 한번만 사용할 수 있으며 없으면 실행이 되지 않는다.

 

 

*많이 사용하는 C 표준 라이브러리 함수 TOP 30

순위 함수 설명 헤더파일
1 printf() 화면 출력 <stdio.h>
2 scanf() 키보드 입력 <stdio.h>
3 strlen() 문자열 길이 <string.h>
4 strcpy() 문자열 복사 <string.h>
5 strcmp() 문자열 비교 <string.h>
6 fgets() 문자열 입력 <stdio.h>
7 malloc() 동적 메모리 할당 <stdlib.h>
8 free() 메모리 해제 <stdlib.h>
9 memset() 메모리 초기화 <string.h>
10 memcpy() 메모리 복사 <string.h>
11 fopen() 파일 열기 <stdio.h>
12 fclose() 파일 닫기 <stdio.h>
13 fprintf() 파일 출력 <stdio.h>
14 fscanf() 파일 입력 <stdio.h>
15 exit() 프로그램 종료 <stdlib.h>
16 atoi() 문자열 → 정수 변환 <stdlib.h>
17 atof() 문자열 → 실수 변환 <stdlib.h>
18 rand() 난수 생성 <stdlib.h>
19 srand() 난수 시드 설정 <stdlib.h>
20 time() 현재 시간 <time.h>
21 getchar() 문자 1개 입력 <stdio.h>
22 putchar() 문자 1개 출력 <stdio.h>
23 puts() 문자열 출력 <stdio.h>
24 gets() 문자열 입력 (현재 비권장) <stdio.h>
25 toupper() 대문자 변환 <ctype.h>
26 tolower() 소문자 변환 <ctype.h>
27 isdigit() 숫자 여부 검사 <ctype.h>
28 sqrt() 제곱근 계산 <math.h>
29 pow() 거듭제곱 계산 <math.h>
30 qsort() 정렬 <stdlib.h>

 

 

*함수 정의, 호출 ★

- 전광판 함수

 

- 두 배 해서 출력하는 함수

 

- 두 배 해서 리턴하는 함수

 

- 두 수를 더해서 리턴하는 함수

 

- 자판기 함수

 

- 자판기 함수2

문자열일 경우 const char* 사용

 

 

*함수 선언, 호출, 정의 구조 ★

→ 함수의 머리 부분하나의 문장;(세미콜론 필수)으로 만드는 것을

함수 선언 또는 함수 원형(prototype)이라고 한다.

 

 

*파이썬 튜터

https://pythontutor.com/

→ 프로그래밍 결과를 시각적으로 보여주는 사이트

 

 

*재귀 함수

함수 내에서 자기 자신을 호출하는 함수

 

 

*실매개변수, 형식매개변수

- argument : 실매개변수

함수를 호출할 때 사용하는 매개변수

- parameter : 형식매개변수

함수 정의에서 사용하는 매개변수

 

 

 

 

 

'c언어 > 복습 과제' 카테고리의 다른 글

c프로그래밍 13주차  (0) 2026.05.27
c프로그래밍 11주차  (0) 2026.05.13
c프로그래밍 10주차  (0) 2026.05.06
c프로그래밍 9주차  (0) 2026.04.29
c프로그래밍 7주차  (0) 2026.04.15