목록self study/언어의 기본부터 (39)
happy coding
TCP school 을 보고 정리한 내용입니다. 파일(file) 파일이란 의미있는 정보를 담고 있으며, 이름을 가지고 있는 저장 장치 상의 논리적인 단위를 의미한다. C언어에서는 이러한 파일을 바이트별로 따로 읽을 수 있는 연속적인 바이트의 집합으로 취급한다. 파일의 종류 1. 바이너리 파일(binary file) 2. 텍스트 파일(text file) 1. 바이너리 파일은 데이터의 저장과 처리를 목적으로 0과 1의 이진 형식으로 인코딩된 파일을 가리킨다. 프로그램이 이 파일의 데이터를 읽거나 쓸 때는 데이터의 어떠한 변환도 일어나지 않는다. 2. 텍스트 파일은 사람이 알아볼 수 있는 문자열로 이루어진 파일을 가리킨다. 프로그램이 이 파일의 데이터를 읽거나 쓸 때는 포맷 형식에 따라 데이터의 변환이 일어난..
버퍼(buffer) 표준 입출력 함수를 사용할 때에는 버퍼라는 임시 메모리 공간을 사용하게 된다. 버퍼를 사용하면서 얻을 수 있는 장점은 1. 문자를 하나씩 전달하는 것이 아닌 묶어서 한 번에 전달하므로, 전송 시간이 적게 걸려 성능이 향상된다. 2. 사용자가 문자를 잘못 입력했을 경우 수정할 수 있다. 이다. 하지만 입력 작업에 버퍼를 사용하는 데에 단점 또한 존재하는데, 빠른 반응이 요구되는 게임과 같은 프로그램에서는 키를 누르는 즉시 바로 전달되어야만 한다. 버퍼링 방식 입출력에 사용되는 버퍼링에는 1. 완전 버퍼링(fully buffered) 2. 라인 버퍼링(line-buffered) 이 존재한다. 완전 버퍼링은 버퍼가 가득 차면 버퍼 안의 내용을 목적지로 보내는 방식이며 보통 파일 입출력에서 ..
TCP school을 보고 정리한 내용입니다. 공용체(union) 공용체는 union 키워드를 사용해 선언하며, 한 가지를 제외한 모든 면에서 구조체와 같다. 그 한가지는 모든 멤버 변수가 하나의 메모리 공간을 공유한다는 점이다. 모든 멤버 변수가 같은 메모리를 공유하므로, 공용체는 한 번에 하나의 멤버 변수밖에 사용할 수 없다. typedef union { unsigned char a; unsigned short b; unsigned int c; } SHAREDATA; int main(void) { SHAREDATA var; var.c = 0x12345678; printf("%x\n", var.a); printf("%x\n", var.b); printf("%x\n", var.c); return 0; }..
TCP school을 보고 정리한 내용입니다. 함수와 구조체 C언어에서 함수를 호출할 때 전달되는 인수나, 함수가 종료될 때 반환되는 반환값으로 구조체를 사용할 수 있다. 그 방식은 기본 타입과 완전히 같으며, 구조체를 가리키는 포인터나 구조체의 한 멤버 변수만을 사용할 수도 있다. 구조체의 멤버 변수를 인수로 전달하는 방식은 함수가 원본 구조체의 복사본을 가지로 작업하므로 안전하다는 장점을 가지고 있다. 구조체 포인터를 인수로 직접 전달하는 방식은 구조체의 복사본이 아닌 주소 하나만을 전달하므로 처리가 빠르지만 호출된 함수에서 원본 구조체에 직접 접근하므로 원본 데이터의 보호 측면에서는 매우 위험하다. 따라서 const 키워드를 사용하여 함수에 전달된 인수를 함수 내에서는 직접 수정할 수 없도록 하는 ..
구조체 배열 선언 구조체 배열을 선언하는 방법은 다른 타입의 배열을 선언하는 방법과 같으며, 구조체 배열에서 각 배열 요소로 접근하는 방법도 일반 배열의 접근 방법과 완전히 같다. 구조체를 가리키는 포인터 struct 구조체이름* 구조체포인터이름;//구조체 변수를 가리키는 구조체 포인터 선언 배열의 경우와는 다르게 구조체의 이름은 구조체를 가리키는 주소가 아니다. 따라서 포인터에 할당할 때에는 반드시 주소 연산자(&)를 사용해야 한다. 구조체 포인터를 이요하여 (접근하고자 하는 구조체의) 멤버에 접근하는 방법은 1. 참조 연산자(*)를 이용하는 방법 2. 화살표 연산자(->)를 이용하는 방법 이 있다. (*구조체포인터).멤버변수이름//참조 연산자를 이용하는 방법 구조체포인터 -> 멤버변수이름//화살표 연..
TCP school 을 보고 정리한 내용입니다. 구조체(structure type) 구조체란 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입을 말한다. 구조체는 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있으며, 이때 구조체를 구성하는 변수를 구조체의 멤버(member) 또는 멤버 변수(member variable)라고 한다. 구조체의 정의와 선언 struct 구조체이름 { 멤버변수1의타입 멤버변수1의이름; 멤버변수2의타입 멤버변수2의이름; ... }; struct 구조체이름 구조체변수이름; //구조체 변수로 선언 struct 구조체이름 { 멤버변수1타입 멤버변수1이름; 멤버변수2타입 멤버변수2이름; ... } 구조체변수이름;//구조체 정의와 변수의 선언 ..
TCP school 을 보고 정리한 내용입니다. 기본적인 입출력 스트림(stream) C 프로그램은 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림을 통해 다루는데 이때 스트림은 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미한다. 즉, 운영체제에 의해 생성되는 가상의 연결 고리를 말한다. C언어에서 파일과의 연결을 위한 스트림은 사용자가 직접 생성하고 소멸시켜야 하지만 콘솔 장치에 대한 스트림은 프로그램 실행 할 때 자동으로 생성되며, 프로그램을 종료할 때 자동으로 소멸한다. 기본적으로 제공되는 표준 스트림(standard stream)은 아래와 같다. stdin 표준 입력 스트림 stdout 표준 출력 스트림 stderr 표준 오류 스트림 EOF (End Of File) C언어는 운영..
TCP school을 보고 정리한 내용입니다. 메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 load되어야 한다. 또한 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다. 메모리 공간은 1. 코드(code)영역 2. 데이터(data) 영역 3. 스택(stack) 영역 4. 힙(heap) 영역 이 있다. 1. 코드 영역 은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다. 2. 데이터 영역 은 프로그램의 전역 변수와 정적 변수가 저장되는 영역이다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 3. 스택 영역 은 함수의 호출과 관계되는 지역 변수와 매개변수가 ..