목록[Programming Language]/C (25)
heenam
Call by value 가장 일반적인 함수 호출의 형태로 호출방식은 값의 복사로 이루어 진다. 함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않는다. 함수가 종료되면 해당 공간은 사라진다. Call by reference 함수 호출시 변수의 주소를 전달해 인자로 전달된 주소가 가리키는 변수의 조작을 함수 내에서 가능하게 한다. 함수를 위한 변도의 임시공간에 생성된다. 마찬가지로 함수가 종료되면 해당 공간은 사라진다. 함수 안에서 인자의 값이 변경되면, 외부의 변수의 값도 변경된다. Call by value의 경우 말 그대로 데이터(값)을 복사해서 함수로 전달하기 때문에 원본의 데이터(값)가 변경 될 가능성이 없지만, 인자를 넘겨줄 때 마다 메모리의 공간을 할당하기 때문에 메모리 공간..
파일의 분할 파일을 그냥 둬도 될까요? 한 파일에 모든 것을 담는 것보다 여러개의 파일을 만들어서 서로 연관 있는 함수와 변수들을 구분해서 담는게 좋다. 외부에 선언 및 정의되었다고 컴파일러에게 알려줘야 합니다. 파일을 분할해서 컴파일 하기 위해서는 컴파일러에게 다음과 같은 내용의 메시지를 전달해야 한다. extern int num // int형 변수 num이 외부에 선언되어 있다. 이처럼 외부에 선언되었음을 컴파일러에게 알리는 extern을 사용한다. 함수에서도 사용 가능하다. extern void Increment(void) // void Increment(void) 함수가 외부에 정의되어 있다. 구체적으로 어느 파일에 선언 및 정의되어있는지 까지는 알리지 않아도 된다. 다른 파일에서 접근을 못하게 ..
선행처리기와 매크로 선행처리는 컴파일 이전의 처리를 의미합니다. 선행처리 과정을 거쳐서 생성되는 파일도 그냥 소스파일일 뿐이다. 왜냐하면 소스파일의 형태가 그래도 유지되기 때문이다. 선행처리가 하는 일은 지극히 단순하다. 삽입해 놓은 선행처리 명령문대로 소스코드의 일부를 수정할 뿐인데, 여기서 말한 수정은 단순치환의 형태를 띠는 경우가 대부분이다. 이처럼 선행처리 명령문은 #문자로 시작을 하며, 컴파일러가 아닌 선행처리기에 의해서 처리되는 문장이기 때문에 명령문의 끝에 세미콜론을 붙이지 않는다. #지시자 매크로 매크로몸체 로 이루어져 있다. *매크로는 대문자로 입력한다. 대표적인 선행처리 명령문 #define: object-like macro #define 지시자는 이어서 등장하는 메크로를 마지막에 등장..
C언어의 메모리 구조 메모리의 구성 프로그램 실행 시 운영체제에 의해서 마련되는 메모리의 구조는 다음과 같이 네 개의 영역으로 구분이 된다. 코드 영역 데이터 영역 힙 영역 스택 영역 메모리 공간을 나눠놓은 이유는 유사한 성향의 데이터를 묶어서 저장을 하면, 관리가 용이해지고 메모리의 접근 속도가 향상된다. 메모리 영역별로 저장되는 데이터 유형 + 코드영역 코드 영역은 이름 그대로 실행할 프로그램이 코드가 저장되는 메모리 공간이다. 따라서 CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행을 한다. + 데이터 영역 데이터 영역에는 전역변수와 static으로 선역되는 static변수가 할당된다. 즉, 이 영역에 할당되는 변수들은 프로그램의 시작과 동시에 메모리 공간에 할당되어 프로그램 종료 시까지..
보호되어 있는 글입니다.
구조체의 정의와 typedef 선언 typedef선언 typedef int INT; // int의 또 다른 이름 INT를 부여! INT num; // int num; 과 동일한 선언 #include typedef int INT; typedef int * PTR_INT; int main() { INT num1 = 120; PTR_INT pnum1 = &num1; printf("%d", *pnum1); } typedef 선언을 통해서, 복잡한 유형의 자료형 선언을 매우 간결히 처리할 수 있다. 자료형의 이름은 대문자로 시작하는 것이 관례이다. 구조체의 정의와 typedef선언 #include pytedef struct point { int xpos; int ypos; }Point; // pytedef str..
구조체란 무엇인가? 구조체의 정의 구조체란 하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 도구. 구조체를 기반으로 새로운 자료형을 정의할수 있다. 구조체 변수의 선언과 접근 struct type_name val_name; // 구조체 변수선언의 기본 형태 맨 앞에는 struct 선언을 추가해야 하며, 이어서 구조체의 이름과 구조체 변수의 이름을 선언해야 한다. #include #include struct people // 구조체 people의 정의 { char name[10]; char phoneNum[20]; int age; }; int main() { struct people man1, man2; // 구조체의 변수 printf("name: "); scanf("%s", man1.name); pr..
스트림과 데이터의 이동 스트림 : 프로그램상에서 모니터와 키보드를 대상으로 데이터를 입출력 하기 위해 연결시켜 주는 다리 문자 단위 입출력 함수 문자 출력 함수: putchar, fputc putchar 함수는 인자로 전달된 문자정보를 stdout으로 표현되는 표준 출력 스트림이다. 따라서 인자로 전달된 문자를 모니터로 출력하는 함수 fputc 함수는 putchar 함수와 동일하다. 단 fputc 함수는 문자를 전송할 스트림을 지정할 수 있다. #include int main() { //putchar fputc 둘다 문자 하나만 출력 가능 putchar('A'); // putchar 함수는 ' '사이에 문자 하나 넣으면 출력 가능 putchar('\n'); fputc('a',stdout); // fput..