C언어 17

[c언어 개념] #17 파일의 분할과 헤더파일 디자인

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 파일의 분할 하나의 파일로 프로그램을 작성하면, 프로그램의 크기가 커졌을 때 관리하기가 어려워진다는 문제점이 발생한다. 따라서 여러 개의 파일을 만들어서 서로 연관 있는 함수와 변수들을 구분해서 담는다. 컴파일러는 파일 단위로 컴파일을 진행한다. 쉽게 말해 컴파일러는 다른 파일의 정보를 참조해 컴파일을 진행하지 않는다. 외부에 선언 및 정의되었다고 컴파일러에게 알려줘야 한다. extern int num; 위의 선언은 변수 num을 할당하는 선언이 아니라 num의 자료형이 무엇이고, 어디에 선언되어 있는..

Algorithm/C 2022.08.13

[c언어 개념] #16 선행처리기와 매크로

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 소스파일 -> 실행파일 소스파일에서 실행파일이 생성되는 과정은 다음과 같다. 최초의 소스파일 (.c) 선행처리기 (선행처리) 선행처리 거친 소스파일 컴파일러 (컴파일) 오브젝트 파일 (.o) 링커 (링크) 실행파일 (.exe) 선행처리 컴파일 이전에 '선행처리'의 과정을 거친다. 선행처리는 컴파일 이전의 처리를 말한다. 컴파일 과정을 거치게 되면 바이너리 데이터로 이루어진 오브젝트 파일이 생성되는데, 컴파일 이전에 진행되는 선행처리의 과정을 거치게 되면 어떠한 데이터로 채워진 파일이 생성될까? 선행처리..

Algorithm/C 2022.08.13

[c언어 개념] #15 메모리 구조, 메모리의 동적 할당 (malloc, free, calloc, realloc)

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 메모리 구조 프로그램을 실행하면 해당 프로그램의 실행을 위한 메모리 공간이 운영체제에 의해서 미리 마련된다. 그 메모리 공간 내에서 변수가 선언되고, 문자열이 선언되는 것이다. 프로그램 실행 시 운영체제에 의해서 마련되는 메모리의 구조는 다음 4개의 영역으로 구분된다. 코드 : 실행할 프로그램의 코드가 저장되는 메모리 공간이다. CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행을 한다. 데이터 : 전역변수, static 변수가 할당된다. 데이터 영역에 할당되는 변수들은 프로그램의 시작과 동시..

Algorithm/C 2022.08.02

[c언어 개념] #14 파일의 개방 모드, 파일 입출력 함수, 파일 위치 지시자

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 파일의 개방 모드 fopen 함수의 두 번째 인자로 "rt", "wt" 외에도 형성할 스트림의 종류는 다양하다. 다음 2가지 기준을 통해서 스트림을 구분할 수 있다. 1. 읽기 위한 스트림 or 쓰기 위한 스트림 데이터의 이동방향을 통해서 스트림을 다음 4가지로 구분할 수 있다. 데이터 READ 스트림 - 읽기만 가능 데이터 WRITE 스트림 - 쓰기만 가능 데이터 APPEND 스트림 - 쓰되 덧붙여 쓰기만 가능 데이터 READ/WRITE 스트림 - 읽기, 쓰기 모두 가능 c언어는 이를 바탕으로 총 6..

Algorithm/C 2022.07.27

[c언어 개념] #13 파일 입출력

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 파일과 스트림 파일은 운영체제에 의해서 관리가 되기 때문에 운영체제와 파일의 관계를 먼저 이해해야 한다. 프로그램상에서 파일에 저장되어 있는 데이터를 참조하고 싶을 때 가장 먼저 해야 할 일은 프로그램과 파일 사이에 데이터가 이동할 수 있는 다리를 놓는 일이다. 데이터 이동의 경로가 되는 다리를 '스트림'이라 하고, 앞선 포스팅에서 다룬 적 있다. 즉 프로그램과 파일 사이에 스트림을 형성해야 데이터를 주고 받을 수 있다. 스트림이라는 것은 운영체제에 의해서 형성되는 소프트웨어적인 상태를 의미하는 것일 ..

Algorithm/C 2022.07.27

[c언어 개념] #12 구조체, 구조체 배열, typedef, 공용체, 열거형

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 구조체(structure) 구조체는 하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 도구이다. 기본 자료형 변수를 묶어서 새로운 자료형을 만드는 것이고, '사용자 정의 자료형'이라 한다. 구조체를 통해서 연관 있는 데이터를 하나로 묶을 수 있는 자료형을 정의하면, 데이터의 표현 및 관리가 용이해지고, 그만큼 합리적인 코드를 작성할 수 있게 된다. struct person { char name[20]; char phoneNum[20]; int age; }; 이렇게 하면 person이라는 이름의 구조체..

Algorithm/C 2022.07.25

[c언어 개념] #11 문자와 문자열 함수

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 스트림과 데이터의 입출력 데이터의 입력과 출력은 프로그램의 흐름을 뜻한다. 프로그램을 중심으로 프로그램 안으로 데이터가 흘러 들어오는 것이 입력이고, 프로그램 밖으로 데이터가 흘러 나가는 것이 출력이다. 대표적인 입력장치로는 키보드가 있으며, 파일도 입력의 대상이 될 수 있다. 대표적은 출력장치로는 모니터가 있으며, 파일도 출력의 대상이 될 수 있다. 우리가 구현하는 프로그램과 모니터, 프로그램과 키보드는 연결되어 있지 않고 서로 떨어져 있는 개체이다. 따라서 프로그램상에서 모니터와 키보드를 대상으로 ..

Algorithm/C 2022.07.25

[c언어 개념] #10 함수 포인터, void 포인터

c언어 개념 정리와 문제 풀이를 통해 알고리즘 수업을 준비하는 과정입니다. 그동안 수강했던 c언어 수업 자료와 윤성우의 열혈 C 프로그래밍의 내용을 포함해 저에게 기록할 가치가 있는 내용이 담겨 있습니다. 함수 포인터란? 변수 뿐만 아니라 함수들도 바이너리 형태로 메모리 공간에 저장되어서 호출 시 실행이 된다. 메모리상에 저장된 함수의 주소 값을 저장하는 포인터 변수가 '함수 포인터 변수'이다. 함수의 이름은 메모리상에 저장된 함수의 주소 값을 의미한다. 배열이름이 배열의 시작주소 값을 의미하듯, 함수이름도 함수가 저장된 메모리 공간의 주소 값을 의미하는 것이다. 그럼 함수 포인터 변수는 어떻게 선언해야 할까? 이를 위해서는 먼저 함수 포인터의 포인터 형을 결정해야 한다. 모든 변수가 그러하듯 형을 결정..

Algorithm/C 2022.07.24