Programming Language(97)
-
열혈 C - Chapter 24 파일 입출력
24-1 파일과 스트림(Stream), 그리고 기본적인 파일의 입출력파일이 중요한게 아니라 입출력이 중요함.입출력의 방법에 대한 전체적인 모델을 파일을 통해서 공부를 한다고 생각하면 된다. 파일에 저장되어 있는 데이터를 읽고 싶어요먼저 복습을 해보자면 우리는 이전까지 console을 통해서 입출력을 했었다.우리의 프로그램과 모니터, 키보드를 통해서 수없이 입출력을 했었다.여기서 프로그램과 모니터에서 발생하는 스트림을, 표준 출력스트림이라고 했었고 이 스트림의 방향은 프로그램 ===> 모니터 였었고 이를 stdout이라는 이름으로 지칭했었다.사실 stdout은 모니터를 의미하는게 아니라 스트림을 의미한다고 앞에서도 이야기 했었다.이 stdout의 출력방향을 모니터가 아니라 다른 방향으로 redirectio..
2024.11.03 -
열혈 C - Chapter 23 구조체와 사용자 정의 자료형2
23-1 구조체의 정의와 typedef 선언typedef는 기존 자료형에 새로운 이름을 부여하는 키워드이다. typedef는 이미 존재하는 자료형에 별칭(alias)를 붙여 사용할 수 있게 해준다. 이를 통해서 가독성을 높이고 유지보수를 용이하게 할 수 있다.typedef의 선언* 표준적인 typedef의 선언법typedef 기존자료형 별칭;// typedef 선언법typedef int INT;typedef double MYTYPE;//typedef 변수 선언법INT num; // == int num;MYTYPE * ptr; // == double * ptr; 구조체 정의와 typedef의 선언구조체를 typedef선언하는 방법은 두가지가 있는데 첫번째로 그냥 아래에 typedef를 사용..
2024.10.31 -
열혈 C - Chapter 22 구조체와 사용자 정의 자료형1
프로그램을 만들면서 구조체는 100% 사용된다.과장 하지 않고 C언어를 사용하면서 구조체를 이용하지 않은 프로그램은 존재할 수 없다.그렇기에 이 구조체는 매우 중요하다.그 만큼 어려운 문법은 아니지만 이 구조체를 정확히 이해하고 정확이 적용할 수 있는가가 중요하다.22-1 구조체란 무엇인가?구조체가 C언어를 사용해서 프로그램을 만들때 왜 100%사용되는지에 대해서 먼저 생각해보자.사실은 우리가 제대로 프로그램을 하나 만들어보고 나면 구조체가 왜 필요한지에 대해서 매우 쉽게 이해할 수 있는데 우리가 경험해본 프로그램이 예제뿐이기에 어느정도는 상상을 기반으로 한 설명의 이해가 필요하다. 우리가 프로그램을 구현한다고 생각해보자.우리의 프로그램에서 관리해야하는 데이터가 주민등록증에 존재하는 데이터들이라고 생각해..
2024.10.28 -
열혈 C - Chapter 21 문자와 문자열 관련 함수
21-1 스트림과 데이터의 이동스트림과 데이터의 이동에 대해서 이야기하기 전에 입력과 출력에 대해서 이야기를 해보자.무엇이 입력이고 무엇이 출력인가보통 인풋(입력), 아웃풋(출력)에 대해서 이야기를 하면 헷갈릴 수 있다.왜냐면 기존에 입력에 대한 장치, 마우스, 키보드, 카메라와 같은것 또 출력 장치, 모니터, 프린터와 같은 것은 직관적이게 입력을 하는 것과 출력을 하는게 느껴지는데 나중에는 흔히 접하는 장비가 아닌 소프트웨어 장치로도 입출력을 할 수 있게 되는데 이런 프로그래밍을 하게 되면 헷갈리게 된다.그래서 미리 입출력의 기준을 정리해보자면 프로그램이다. 프로그램이 있고 우리가 키보드로 부터 데이터를 입력받고 입력 받는 내용들을 모니터로 출력하게 된다.이때 외부에서 프로그램으로 데이터를 전달하는 장..
2024.10.21 -
열혈 C - Chapter 19 함수 포인터와 void 포인터
19-1 함수 포인터와 void 포인터함수 포인터는 독특한 포인터이다.그러나 기존에 Chapter 18을 잘 이해했다면 어렵진 않을 것이다그런데 void포인터는 활용이 잘 되는 편인데, 함수 포인터는 기본서를 통해서는 접하기 힘들것이다.추후에 다양하게 공부하면서 접하게 될것이나 우선 이해에 대해서만 설명해보겠다. 우선 이전에 포인터 변수의 접근에 대해서 생각해보자.먼저int num = 10;int * ptr = #*ptr = 20;이라는 코드를 작성했을때 컴파일러는 해당 코드를 어떤 기준으로 컴파일을 할까이전에 말했던 것 처럼 ptr이라는 것에는 주소값이 담겨 있고 그 외에 가리키고 있는 값의 타입에 대한 정보를 담고 있고 그걸 가지고 컴파일을 하게 된다. 더 세부적으로는 0x1234라는 숫자는 ..
2024.10.19 -
열혈C - Chapter 18 다차원 배열과 포인터의 관계
18-1 2차원 배열이름의 포인터 형2차원 배열 이름의 포인터형은 무엇일까예를들어 int arrd[3][4];라는 2차원 배열이 있다고 했을때 이 배열의 이름의 포인터형은 무엇일까에 대해서 생각해보자.이는 꽤나 쉽지는 않다. 우리가 잘아는 1차원 배열을 두개 선언해보자.int arr[3];int arr2[4];가 있을 때 각 배열의 이름의 포인터의 타입은 int * 이다그 이유는 배열의 이름은 배열의 첫요소인 arr[0]을 가리키고 있기 때문이며 그 타입은 int형이기 때문이다.그런데 이런 방식이 이차원 배열에서는 통용되지 않는다. 2차원 배열을 하나 더 만들어보자.int arr2d[3][4];int arr2d2[3][3];과 같은 2차원 배열이 있다고 보면 우리는 배열의 길이는 상관없이 1차원 배열이면..
2024.10.18