* 소스코드(원시코드) -> 컴파일 -> 오브젝트 파일(.obj)
* 연산자
- && : 피연산자 둘 다 참이면 TRUE
- || : OR와 같음 하나 이상이 참일 시 TRUE
- XOR : 하나만 참일 경우 TRUE, 둘다 참이거나 둘다 거짓이면 FALSE
* 자료형의 메모리 크기 구하기
- sizeof 변수이름 : 변수의 메모리 할당 크기
- sizeof (int) : int 자료형의 메모리 할당 크기
* const 키워드
- 이름을 갖는 상수
- const 상수는 초기화시 값이 없으면 쓰레기값으로 초기화, 후에 변경할 수 없음
* static 변수
- 한번만 초기화 됨
- 전역 변수의 특성을 갖고 선언된 지역에서만 접근이 가능함
* 배열
- 배열 선언시에는 배열 크기에 상수만 사용할 수 있음
* 포인터
- int* a, int * a, int *a 셋 모두 같음
* 구조체
- 구조체 포인터를 사용한 멤버 접근 (구조체 struct, 구조체 포인터 pstruct)
(*pstruct).mem == pstruct->mem 두번째 방식을 많이 사용함
* Typedef 사용자 정의 자료형
- INT, P_INT, UINT, P_UINT, CHAR, UCHAR 등의 사용이 많음
- 모두 같은 자료형이지만 정수형 변수, 정수형 변수의 포인터, unsigned 정수형 등 구분짓기 위해 사용
* 메모리 할당 영역
- Data Area(데이터 영역) : 전역 변수와 static 변수가 할당되는 영역
- Stack Area(스택 영역) : 지역 변수와 매개변수 영역
- Heap Area(힙 영역) : 실행 중(런-타임)에 할당할 메모리 크기를 결정해야 하는 경우에 사용하는 영역(프로그래머가 직접 사용하는 영역)
- 프로그래머가 Heap Area에 메모리를 할당하는 것이 동적 할당(Dynamic Allocation)
- Data Area, Stack Area에 메모리가 할당되는 것이 정적 할당(Static Allocation)
* malloc 함수
- 동적 메모리 할당할 경우에 사용하는 함수
* 조건부 컴파일
#if CONDITION1 // CONDITION1일 경우
expression1 // expression1을 실행
#elif CONDITION2 // CONDITION2일 경우
expression2 // expression2를 실행
#else
expression3 // 그 밖에는 expression3을 실행
#endif
다시 한번 공부한 C언어 개념에서 잊고 있었거나 확인해야할 부분들만 적음