본문 바로가기

컴퓨터/C

C module 모듈화 I. extern 키워드 1. module.c 1 int i=10; 2 static int j = 20; //static 키워드로 외부 접근을 방지한다. 3 4 int increase(int a); 5 6 int increase(int a) { 7 return a++; 8 } 2. main.c 1 #include 2 3 extern int i; 4 //extern int j; 에러! 외부 접근이 허용되지 않았다. 5 extern int increase(int a); 6 7 int main() { 8 printf("%d\n", increase(i)); 9 return 0; 10 } II. header 위의 main.c 코드에서 3~5부분은 경우에 따라 엄청나게 길어질 수 있다. 이 부분을 헤더 파일로 분리..
C Macro 매크로 I. 전처리기 지시자 #define II. 매크로 상수 선언 #define PI 3.14 PI를 3.14로 치환한다. ※ 매크로 선언에는 ';'를 붙이지 않는다. III. 매크로 함수 선언 #define SQUARE(x) x*x 매크로 함수는 자료형에 독립적이다. 함수의 호출 때문에 발생하는성능의 저하가 일어나지 않으니 실행 속도를 향상시킨다. 단, 함수 호출 문장이 전부 매크로 함수 몸체 부분으로 완전히 치환되어 버리기 때문에 코드의 크기는 커진다. 그래서 함수의 크기가 한 두줄 정도로 작으면 매크로 함수로 정의하면 좋다. IV. 매크로 특징 1 #include 2 3 #define string "C++ Compatible C" 4 #define cal (3*4)+(12/4) 5 6 #define ON..
C 실행 파일의 생성 순서 프로그램 작성 → 전처리(Preprocess) → 컴파일(Compile) → 링크(Link) → 실행파일 생성
C dynamic Allocation 메모리 동적 할당 I. 할당 1. malloc #include void* malloc(size_t size) //size_t size: 할당하고자 하는 메모리의 크기. 바이트 단위 성공 시 할당된 메모리의 첫 번째 주소 리턴, 실패 시 NULL 포인터 리턴 2. calloc #include void* calloc(size_t elt_count, size_t elt_size) /* size_t elt_count: 변수의 개수 size_t elt_size: 변수의 크기 */ 성공 시 할당받은 메모리의 포인터(void* 형), 실패 시 NULL 리턴 elt_size 크기의 변수를 elt_count개만큼 저장할 수 있는 메모리 공간을 힙 영역에 할당한다. II. 해제 #include void free(void* ptr) 전달된 ..
C 메모리 I. 데이터 영역 변수 영역 할당 소멸 전역변수 Static 변수 데이터 영역 Data Area 프로그램 시작 프로그램 종료 프로그래머 할당 힙 영역 Heap Area ↓ 지역변수 매개변수 ↑ 스택 영역 Stack Area 함수 호출 함수 호출 완료 II. 컴파일 과정 과정 메모리 공간 확보 값 할당 1. 컴파일 타임 Compile-time 데이터 영역 없음 스택 영역 2. 런 타임 Run-time 힙 영역 데이터 영역 스택 영역 힙 영역