목록c (50)
Nagie's DevStory
C 프로그래밍에서 전처리 지시문은 코드를 컴파일하기 전 미리 처리되는 일종의 명령문이다. 이러한 지시문은 코드의 특정 부분을 변경하거나 코드의 특정 부분을 제어하는 데 사용된다. #include는 다른 헤더 파일을 현재 소스 파일에 포함하는 역할을 하며 소스 코드 재사용을 위해 많이 사용하는 전처리 지시문이다. #include // 표준 입출력 헤더의 기능들을 해당 소스코드에서 사용할 수 있게 포함 #define은 매크로를 정의하며 해당 전처리 지시문으로 정의된 매크로는 코드의 특정 부분을 컴파일할 때 지시한 텍스트로 치환하는데 사용되며 #define으로 정의한 마지막엔 ;(세미콜론)을 붙이지 않는다. #define MAX_VAL 50 // MAX_VAL은 곧 상수 50이다. //사용예시 printf_s..
goto문은 코드 블럭의 제어권을 레이블이 있는 위치로 이동시켜 실행하게 한다. 레이블은 옮길 위치는 나타내는 일종의 태그 역할을 하며 goto를 설명하는 게시글을 작성하고 있지만. goto문을 사용하지는 말자... 코드 흐름의 이해를 저하시키며 이로인해 제어를 복잡하게 만들뿐 아니라 코드 유지보수도 힘들어지기 때문이다. 그냥 없는 기능이라 생각하는 게 속이 편하다. 아래는 사용예시이다. #include int main() { int n = 0; while (true) { n++; if (n == 100) { goto ESCAPE; //ESCAPE 레이블로 이동 } } ESCAPE: //레이블 printf_s("ESCAPE!"); }
열거형이란 문자열이 정수형 상수를 대신하도록 정의할 수 있는 문법이다. 간단히 설명하자면 프로그래머가 알아보기 쉽게 숫자를 문자열로 재정의한다는 뜻이며 아래의 코드처럼 사용할 수 있다. //초깃값이 없는 열거형 enum E_MY_ENUM { FIRST, SECOND, THIRD }; //초깃값이 있는 열거형 enum E_MY_ENUM { FIRST = 1, SECOND = 2, THIRD = 3 }; 열거형은 초깃값이 없으면 첫 문자열에 해당하는 상수가 0부터 1씩 증가하게 된다. 위의 코드를 참고하면 FIRST는 곧 숫자 0이고 SECOND는 숫자 1 이란 말이다. 그리고 첫 문자열에만 초깃값이 지정되어 있다면 그 숫자부터 1씩 증가하는 형태가 된다. 물론 문자열마다 프로그래머가 상수를 지정해 놓았다면..
C에서 변수는 선언한 위치에 따라 접근 범위와 변수의 수명이 달라진다. 총 3가지의 구분 방법이 있으며 각각의 특징은 아래와 같다. 변수의 구분 선언 위치 지역 변수 ( LOCAL ) 함수 안에 선언 전역 변수 ( GLOBAL ) 함수 밖에 선언 정적 변수 ( STATIC ) static 키워드를 사용해 함수 안과 밖에 선언 표를 봐도 이해가 힘들 경우 아래의 코드를 참고하면 된다. #include int g_nGlobal = 30; //전역 변수 static int g_nStGlobal = 50; //정적 전역변수 int main () { int nLocal = 10; //지역 변수 static int nStLocal = 99; //정적 지역변수 } 선언 위치까지는 알겠는데 사용 범위가 궁금할 수도 있..
상수형 변수에선 const의 위치에 따른 의미변화가 없었지만 상수형 포인터 변수에선 const의 위치에 따른 의미변화가 생긴다. int num = 1; const int* ptr1 = # //포인터가 가리키는 값에 대해 상수화 int* const ptr2 = # //자기 자신의 메모리 값을 상수화 const 키워드가 앞에 붙으면 해당 포인터가 가리키는 값을 상수화한다. 그렇다고 오해하면 안 되는 게 포인터를 통한 연산만 상수화가 되는 것이고 num 변수 자체는 상수화가 되지 않는다. const 키워드가 뒤에 붙는다면 포인터 변수 자기 자신의 값을 상수화하게 된다. 포인터 변수의 자기 자신을 상수화한다는 건 해당 포인터 변수가 가지고 있는 메모리 값을 변경할 수 없다는 의미이며 다른 변수의 ..