1. C 프로그램의 기본 구조
C언어 프로그램은 보통 main() 함수부터 실행된다.
예시
#include <stdio.h>
int main() {
printf("Hello\n");
return 0;
}
핵심 개념
#include <stdio.h>는 표준 입출력 헤더 파일main()은 프로그램 시작 함수printf()는 출력 함수return 0;은 정상 종료 의미
시험 포인트
main()구조printf()출력 결과- 개행 문자
\n
2. 변수와 자료형
변수는 값을 저장하는 공간이다.
기본 자료형
int: 정수char: 문자 1개float: 실수double: 더 정밀한 실수
예시
int a = 10;
char c = 'A';
float f = 3.14f;
double d = 3.14;
핵심 개념
- 문자 하나는
'A' - 문자열은
"ABC" char는 문자 1개float는 보통f를 붙여서 표현
시험 포인트
- 문자와 문자열 구분
- 정수형, 실수형 구분
3. 연산자
산술 연산자
+: 더하기-: 빼기*: 곱하기/: 나누기%: 나머지
비교 연산자
==,!=,>,<,>=,<=
논리 연산자
&&: AND||: OR!: NOT
대입 연산자
=+=-=*=/=%=
핵심 개념
- 정수끼리 나누면 정수 결과가 나온다
%는 나머지를 구한다
예시
int a = 7 / 2;
int b = 7 % 2;
printf("%d %d", a, b);
출력
3 1
시험 포인트
- 정수 나눗셈
- 나머지 계산
- 복합 대입 연산
4. 증감 연산자
++a: 먼저 증가, 나중 사용a++: 먼저 사용, 나중 증가--a: 먼저 감소, 나중 사용a--: 먼저 사용, 나중 감소
예시
int a = 5;
printf("%d\n", a++);
printf("%d\n", a);
출력
5
6
핵심 개념
- 전위와 후위는 결과가 다를 수 있다
시험 포인트
a++ + ++a같은 식의 결과- 전위/후위 증가 순서
5. 조건문
if문
if (x > 0) {
printf("양수");
}
if ~ else
if (x % 2 == 0) {
printf("짝수");
} else {
printf("홀수");
}
switch문
switch (n) {
case 1:
printf("one");
break;
case 2:
printf("two");
break;
default:
printf("other");
}
핵심 개념
if는 조건이 참일 때 실행switch는break가 없으면 아래 case까지 계속 실행 가능
시험 포인트
switch의break- 조건문 실행 흐름
6. 반복문
for문
for (int i = 0; i < 3; i++) {
printf("%d ", i);
}
while문
int i = 0;
while (i < 3) {
printf("%d ", i);
i++;
}
do-while문
int i = 0;
do {
printf("%d ", i);
i++;
} while (i < 3);
핵심 개념
for: 초기식, 조건식, 증감식while: 조건 먼저 검사do-while: 일단 한 번 실행 후 검사
시험 포인트
- 반복 횟수
- 중첩 반복문
break,continue
7. 배열
배열은 같은 자료형 여러 개를 연속된 공간에 저장한 것이다.
예시
int arr[3] = {10, 20, 30};
printf("%d", arr[0]);
핵심 개념
- 인덱스는 0부터 시작
arr[0],arr[1],arr[2]- 배열 크기보다 큰 인덱스 접근은 위험
시험 포인트
- 배열 요소 접근
- 반복문과 배열 조합
- 배열 초기화
8. 2차원 배열
행과 열 구조를 가진 배열이다.
예시
int a[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
printf("%d", a[1][2]);
출력
6
핵심 개념
a[행][열]- 반복문과 함께 자주 나옴
시험 포인트
- 2차원 배열 채우기
- 대각선, 삼각형 형태 출력
9. 함수
함수는 특정 작업을 수행하는 코드 묶음이다.
예시
int add(int a, int b) {
return a + b;
}
핵심 개념
- 반환형
- 함수명
- 매개변수
return
예시
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
printf("%d", add(2, 3));
return 0;
}
시험 포인트
- 함수 호출 결과
- 반환값
- 함수 실행 순서
10. 값에 의한 전달
C언어는 기본적으로 값에 의한 전달이다.
예시
void func(int x) {
x = 100;
}
int main() {
int a = 10;
func(a);
printf("%d", a);
}
출력
10
핵심 개념
- 함수에 값을 넘기면 복사본이 전달된다
- 함수 안에서 바꿔도 원본은 안 바뀐다
시험 포인트
- 원본이 바뀌는지 안 바뀌는지 판단
11. 포인터
포인터는 주소를 저장하는 변수다.
예시
int a = 10;
int *p = &a;
printf("%d", *p);
핵심 개념
&a: a의 주소p: 주소 저장*p: p가 가리키는 값
시험 포인트
&와*의 의미- 포인터가 가리키는 값 변경
12. 포인터를 이용한 원본 변경
포인터를 매개변수로 넘기면 원본 값을 바꿀 수 있다.
예시
void func(int *p) {
*p = 20;
}
int main() {
int a = 10;
func(&a);
printf("%d", a);
}
출력
20
핵심 개념
- 주소를 넘기면 함수 안에서 원본 변경 가능
*p = 20은 원본 값을 수정
시험 포인트
- 값 전달과 포인터 전달 차이
13. 배열과 포인터의 관계
배열 이름은 첫 번째 요소의 주소처럼 사용될 수 있다.
예시
int arr[3] = {3, 4, 5};
int *p = arr;
printf("%d %d", arr[0], p[0]);
출력
3 3
핵심 개념
arr는&arr[0]처럼 사용 가능p[0]는*p와 같은 뜻
시험 포인트
- 배열과 포인터 접근 방식
- 배열 전달 시 원본 변경 여부
14. 함수 안에서 포인터 재대입
이 부분이 시험에 자주 나온다.
예시
void func(int *p) {
int temp[] = {0, 1, 2};
p = temp;
p[0] = 9;
}
int main() {
int arr[] = {3, 4, 5};
func(arr);
printf("%d", arr[0]);
}
출력
3
핵심 개념
- 처음
p는arr를 가리킨다 p = temp;이후에는 지역 배열temp를 가리킨다- 따라서
p[0] = 9는temp[0]만 바꾸고arr[0]은 안 바뀐다
시험 포인트
- 포인터를 넘겼다고 무조건 원본이 바뀌는 건 아님
- 현재 무엇을 가리키는지가 중요
15. 문자열
C언어 문자열은 char 배열로 표현한다.
예시
char str[] = "ABC";
printf("%s", str);
핵심 개념
- 문자열 끝에는
'\0'이 자동으로 붙는다 %s로 문자열 출력
시험 포인트
- 문자열 길이
- 문자 배열과 문자열 차이
'\0'의미
16. 문자와 문자열
예시
char c = 'A';
char s[] = "A";
핵심 개념
'A': 문자 1개"A": 문자열- 문자와 문자열은 다르다
시험 포인트
char와char[]차이
17. 구조체
구조체는 서로 다른 자료형을 하나로 묶는 사용자 정의 자료형이다.
예시
struct Student {
int id;
char grade;
};
사용 예시
struct Student s;
s.id = 1;
s.grade = 'A';
핵심 개념
- 여러 속성을 하나의 단위로 묶음
.연산자로 멤버 접근
시험 포인트
- 구조체 선언
- 멤버 접근
18. typedef와 구조체
typedef를 사용하면 자료형 이름을 새로 붙일 수 있다.
예시
typedef struct {
int x;
} Struct;
사용 예시
Struct a;
a.x = 10;
printf("%d", a.x);
핵심 개념
typedef로 구조체 이름을 간단히 사용 가능
시험 포인트
typedef struct형태- 구조체 변수 선언
19. 구조체와 포인터
구조체 포인터는 -> 연산자를 사용한다.
예시
typedef struct {
int x;
} Struct;
int main() {
Struct a = {10};
Struct *p = &a;
printf("%d", p->x);
return 0;
}
핵심 개념
p->x는(*p).x와 같다
시험 포인트
.와->차이
20. 구조체 값 전달과 포인터 전달 차이
예시
typedef struct {
int x;
} Struct;
void change(Struct *a, Struct b) {
a->x += b.x;
b.x = 100;
}
int main() {
Struct b1 = {3};
Struct b2 = {4};
change(&b1, b2);
printf("%d", b1.x);
}
출력
7
핵심 개념
a는 포인터라 원본b1을 바꾼다b는 값 전달이라 복사본만 바뀐다
시험 포인트
- 구조체 포인터와 구조체 값 전달 차이
21. 재귀함수
함수가 자기 자신을 다시 호출하는 방식이다.
예시
int func(int n) {
if (n == 0) return 0;
return n + func(n - 1);
}
핵심 개념
- 종료 조건이 반드시 있어야 한다
- 호출 순서를 따라가며 계산해야 한다
시험 포인트
- 재귀 호출 결과
- 종료 조건
22. 비트 연산자
&: AND|: OR^: XOR~: NOT<<: 왼쪽 시프트>>: 오른쪽 시프트
예시
int a = 3 << 1;
printf("%d", a);
출력
6
핵심 개념
- 왼쪽 시프트는 보통 2배 효과
- 오른쪽 시프트는 보통 2로 나누는 효과
시험 포인트
- 비트 연산 결과
<<,>>,&자주 나옴
23. scanf와 printf
printf
출력 함수
printf("%d", a);
scanf
입력 함수
scanf("%d", &a);
핵심 개념
%d: 정수%c: 문자%f: 실수%s: 문자열
시험 포인트
scanf에서 변수 앞에&붙이는지- 서식 지정자 구분
'정보처리산업기사' 카테고리의 다른 글
| 정보처리산업기사 실기 Python 문법 정리 (0) | 2026.04.07 |
|---|---|
| 정보처리산업기사 실기 C언어 기출 10문제 (0) | 2026.04.07 |
| 정보처리산업기사 실기 Java 기출 10문제 (0) | 2026.04.07 |
| 정보처리산업기사 실기 Java 문법 정리 (0) | 2026.04.07 |
| 정보처리산업기사 실기 SQL 개념 키워드 정리 (1) | 2026.04.06 |