프로그램의 동작 과정
1. 선언
2. 입력
3. 처리
4. 출력
컴파일 이란?
인간이 만든 고급언어를 컴퓨터가 해석할 수 있는 저급언어로 번역
C언어 컴파일 과정
구분 | 기능 | 확장자 |
전처리기 | 전처리 구문을 처리하는 과정 ex) #include<stdio.h> |
.c |
컴파일러 | 고수준 언어를 저수준 언어로 변환 기계어와 가장 가까운 형태의 언어 |
.i |
어셈블러 | 완전히 기계어로 바꾸어 주는 역할 | .o |
링커 | 여러 개의 오브젝트 파일을 합치거나, 라이브러리를 합치는 역할 | .exe |
컴파일러
- 고급 언어로 작성된 프로그램을 컴퓨터에서 실행하기 위해 컴퓨터가 이해할 수 있는 언어로 번역
- 전체를 번역하므로, 번역시간이 오래 걸리지만 한 번 번역한 후에는 다시 번역하지 않으므로 실행 속도가 빠름
- 종류: C, C++, JAVA, 등
인터프리터
- 고급 언어로 작성된 프로그램을 한 줄씩 읽어 들여서 실행하는 프로그램 -> 통역
- 번역과 실행이 동시에 이루어지므로, 별도의 실행파일이 존재하지 않는다.
- 종류: Ruby, php, javascript, Basic
변수생성 규칙 및 특징
- 예약어(키워드)는 사용할 수 없다
- 공백을 포함할 수 없다
- 첫 글자는 영문과 언더바(_)만 사용이 가능하다 (첫 글자에 숫자 사용 불가)
- 언더바(_) 이외의 특수문자는 사용할 수 없다
메모리 크기
- 문자형 char = 1byte(C), 2byte(java) ← 유니코드 사용
- 정수형 short = 2byte, int = 4byte, long = 4byte
- 실수형 float = 4byte, double = 8byte
변수의 종류
1. 지역변수
- 함수/블록 안에서 선언하는 변수
- 함수/블록의 종료와 함께 메모리상에서 소멸(☆)
- 초기값이 없으면 쓰레기 값이 들어감
- 스택 영역에 저장됨
void main() {
if(1) {
int num1 = 10;
printf("%d", num1); // 10
}
printf("%d", num1); // 이거 때문에 오류남
}
2. 전역변수
- 함수 블록 밖에서 선언하며 전체 함수에 영향을 미친다.
- 프로그램이 종료될 때 메모리상에서 소멸된다
- 초기값이 없으면 0 값이 들어감
- 데이터 영역에 저장됨
int num1;
void main() {
num1 = 10; // 전역변수에 대입
printf("%d", num1); // 10
func(); // num1 → 20
printf("%d", num1); // 1020
}
void func() {
num1 = 20;
}
3. 정적변수
- static 으로 선언하며 선언된 블록 내에서만 사용가능
- 함수가 종료되어도 소멸되지 않고, 값이 그대로 유지됨
- 프로그램이 종료될 때 메모리 상에서 소멸
- 초기값이 없으면 0이 입력되고, 단 한번만 초기화
- 데이터 영역에 저장됨
void main() {
add(10);
add(5);
add(3);
}
int add(int i) {
static int sum = 0; // 최초 한번만 초기화
sum += i; // 10 → 15 → 18
printf("sum: %d\n", sum); // 10\n 15\n 18\n
}
//static이 아니라 그냥 지역변수라면 10\n 5\n 3\n
4. 동적변수
- 메모리에 동적할당으로 생성되는 변수
- Run time 시간에 메모리를 할당
- 동적 기억장소에 할당하여 메모리 낭비를 피하려는 목적
- 무조건 포인터를 사용해야 함
- 힙 영역에 저장됨

'정보처리기사' 카테고리의 다른 글
[정보처리기사] C언어 특강 10~11강 정리 (0) | 2024.09.19 |
---|---|
[정보처리기사] C언어 특강 5~9강 정리 (0) | 2024.09.12 |
[정보처리기사] 2020년 1회, 2회 정보시스템 구축 관리 (0) | 2024.07.23 |
[정보처리기사] 2020년 1회, 2회 프로그래밍 언어 활용 정리 (0) | 2024.07.23 |
[정보처리기사] 2020년 1회, 2회 데이터베이스 구축 (0) | 2024.07.22 |