본문 바로가기

c언어30

[C언어] 제 20 강 : 매크로와 전처리기 처음에 설명했던 부분 기억나시나요? 실행파일이 컴파일과 링크의 과정을 거쳐서 만들어지는 것으로 설명했습니다. 실제로는 컴파일 이전에 '전처리'라는 과정을 거치게 됩니다. 즉, 소스파일은 선행처리기에 의해 전처리 과정을 한번 거친 후에 컴파일 거치게 됩니다. 사실 선행처리기가 하는 일은 아주 간단합니다. 우리가 작성해 놓은 선행처리 명령문대로 소스코드의 일부를 수정하는 것이 전부입니다. 지시자 매크로 매크로몸체 위와 같이 선행처리 명령문은 기본적으로 세 부분으로 나뉩니다. 아래 문장을 예로들어 설명하겠습니다. #define A 10 지시자(#define)는 선행처리기에 이어서 등장하는 매크로를 마지막에 등장하는 매크로 몸체로 치환하라는 명령을 내립니다. 즉, A 를 10으로 치환하라는 의미입니다. ex) .. 2012. 1. 27.
[C언어] 제 19 강 : 문자열 관련 표준 함수 [문자열 함수] 1. int puts(const char* s); 성공시 0이아닌 값을, 실패 시 EOF 반환 ex) puts("hello boxbop!"); 2. int putchar(int c); 성공 시 출력된 문자 정보를, 실패 시 EOF 반환 ex) putchar('A'); cf)EOF는 End Of File의 약자로 상수 값은 -1입니다. 파일의 끝을 표시하기 위해 정의된 상수입니다. 3. char* gets(char* s); 성공 시 매개변수로 전달된 값을, 실패 시 NULL 포인터 반환 ex) char str[10]; gets(str); 이함수를 호출하면서 메모리의 주소 값을 인자로 전달하면, 키보드로부터 입력되는 문자열이, 전달된 주소의 메모리에 저장됩니다. 4. int getchar(v.. 2012. 1. 26.
[C언어] 제 18 강 : 메모리 관련 함수와 한정자 포인터와 관련이 있는 내용들을 설명하겠습니다. 여기서 한장자라고 하면 제한을 걸때 사용되는 키워드라고 할 수 있습니다. 포인터의 const 선언 const는 변수를 상수화 하는 용도로 사용이 됩니다. 이번에는 포인터에 적용해보도록 하겠습니다. int number =10; int* ptr = &number; 여기서 const가 들어갈 수 있는 자리는 2군데 있습니다. const int* const ptr = # 포인터 선언 앞에 사용될 수 있고, 포인터 변수의 이름 앞에 삽입될 수도 있습니다. 두 군데 모두 사용할 수도 있습니다. int number = 10; const int* ptr = &number; 이렇게 사용이 된다면 포인터 ptr은 가리키는 대상에 대한 값의 변경이 허용되지 않습니다. 예.. 2012. 1. 26.
[C언어] 제 17 강 : 함수의 포인터 활용과 메모리 할당 포인터의 개념은 충분히 이해가 가셨으면 이번엔 포인터의 활용 방법과 메모리에서의 공간 할당을 공부해보겠습니다. call by value & call by reference 포인터를 이용하여 함수 내에서 외부에 있는 변수에 직접 접근이 가능하다. void CallByValue(int number) { number++; } void CallByReference(int* ptr) { (*ptr)++; } 첫 번째 함수와 두 번째 함수의 차이점은 무엇일까요? 가장 눈에 뛰는건 포인터의 사용입니다. 첫 번째는 매개변수를 인자로 사용하지만 두 번째는 포인터를 사용해 주소 값을 매개 변수로 입력 받습니다. 첫 번째 함수는 임시로 함수 내부에서 number이라는 매개변수를 생성합니다. 즉 인자로 10이라는 수, 또는 .. 2012. 1. 24.