본문 바로가기

Books

(11)
[열혈C] 08. Part4 Chapter21 문자와 문자열 처리 함수2 표준 C 라이브러리에는 문자열에 관련된 다양한 함수를 제공한다. string.h 헤더 파일에 선언되어 있는 문자열 관련 함수들 중에서 사용 빈도가 높은 함수들을 소개한다. 21장 내용 정리2 문자열의 길이를 반환하는 strlen 함수 strlen 함수는 인자로 전달된 문자열의 길이를 반환해주는 함수이다. 인자로 문자열의 포인터를 전달받는다.전달된 포인터가 가리키는 문자열의 길이를 계산하여 반환해 주되, 문자열의 마지막에 추가되는 NULL 문자는 문자열 길이에 포함되지 않는다.리턴타입(반환형) size_t는 그냥 'unsigned int'로 생각하면 된다. 1234#include size_t strlen(const char* s)// 전달되는 문자열의 길이를 리턴cs 예제1234567891011121314..
[열혈C] 07. Part4 Chapter21 문자와 문자열 처리 함수 프로그램에서 문자열을 다루는 것은 상당히 중요하다. 사람이 이해할 수 있는 모든 정보는 문자열로 표현이 되어야 의미를 지니기 때문이다. 스트림, 데이터 입 · 출력의 개념에 대해 정확히 이해하자. 뒤에서 언급하고 있는 파일 입 · 출력에 대한 내용과 연관성을 지닌다. 21장 내용 정리 스트림과 데이터의 전송 스트림(stream)이란 데이터를 이동시킬 수 있는 '다리'의 역할을 하는 것이라고 생각하면 된다. 실행중인 프로그램과 모니터 사이에 다리(출력 스트림)가 놓여 있고, 실행중인 프로그램과 키보드 사이에도 다리(입력 스트림)가 놓여 있다. printf 함수와 scanf 함수를 통해서 데이터를 입 · 출력할 수 있는 이유가 바로 여기에 있다. 스트림과 생성과 소멸 파일 입 · 출력과 콘솔(키보드와 모니터..
[열혈C] 06. Part3 Chapter20 도전! 프로그래밍 THREE 도전1 4 x 4 int형 2차원 배열을 선언하고, 모든 요소를 아래 그림의 왼쪽에 있는 형태와 동일하게 초기화하자. 그리고 배열의 요소들을 오른쪽 방향으로 90도씩 이동시켜서 출력하는 프로그램을 작성해보자. 배열이 변경되는 형태는 다음과 같다. 도전2 달팽이 형태의 배열을 만들어 주는 프로그램을 작성해 보자. 다음 그림은 달팽이 형태의 배열이 무엇을 의미하는지 보여주고 있다.위 그림에서는 4 x 4의 달팽이 배열과 5 x 5의 달팽이 배열을 보여주고 있다. 사용자로부터 하나의 숫자 n을 입력받아서 n x n의 달팽이 배열을 출력해 주는 프로그램을 작성해 보자. 도전3 프로그램을 구현하다 보면 난수(Random Number)를 발생시켜야 하는 경우가 종종 있다. 여기서 말하는 난수란 임의의, 정해지지 않..
[열혈C] 05. Part3 Chapter19 함수 포인터와 void 포인터 문법적인 이해에 돕는데 초점을 둘 것이다. 앞으로 공부해야 할 보다 수준 있는 프로그래밍 분야(알고리즘, 네트워크 프로그래밍, 시스템 프로그래밍, win32 프로그래밍 등)를 접하면서 모든 문법적 요소의 필요성을 스스로 느끼게 될 것이다. 여기서 소개하는 함수 포인터와 void 포인터 또한 그렇다! 19장 내용 정리 함수 포인터 프로그래머가 정의한 모든 함수는 프로그램 실행 시 메인 메모리(main memory)에 올라가게 된다. 메모리 상에 올라간 다음에야 실행이 가능하기 때문이다. 이 때 함수의 이름은 메모리상에 존재하는 함수의 위치를 가리키는 주소 값을 의미한다. 즉 "함수의 이름은 메모리상에 존재하는 함수의 위치를 가리키는 포인터"이다. 함수의 이름이 주소 값을 지니는 포인터라면, 함수의 이름과 ..
[열혈C] 04. Part3 Chapter18 다차원 배열과 포인터의 관계 이번 장의 포인터의 마지막 난관이다. 그만큼 깊이 있는 이해를 요구한다. 한번에 이해되지 않는다면 서너 번 봐서 이해하자. 18장 내용 정리 2차원 배열 이름의 포인터 타입 14장에서는 1차원 배열을 함수의 인자로 전달하는 방법에 대해 이야기하였다.아래 그림에서처럼, 함수로 전달되는 배열의 이름 arr은 int형 포인터(int *)로 받을 수 있다.int형 변수를 요소로 지니는 1차원 배열의 이름 역시 int형 포인터이기 때문에 가능한 일이다. 2차원 배열의 이름은 더블 포인터로 받으면 될까? No... 2차원 배열 이름이 가리키는 것은? 1차원 배열에서는 배열 이름이 가리키는 요소가 배열 이름의 포인터 타입을 결정짓는 기준이었다. 마찬가지로 2차원 배열에서도 배열 이름이 가리키는 요소가 배열 이름의 포..
[열혈C] 03. Part3 Chapter16-17 내용 정리 (다차원 배열 / 포인터의 포인터) 16장 내용 정리 다차원 배열 다차원 배열이란 2차원 이상의 배열을 의미하는 것이다.2차원 배열만 개념적으로 잘 이해하고 있으면, 그 이상의 배열은 이해하기 수월하다.뿐만 아니라 3차원 이상의 배열은 일반적으로 사용되지 않는다. 2차원 배열에서 선언과 동시에 초기화하는 경우, 첫 번째 인덱스만 생략 가능하다.12int arr1[][4] = {1,2,3,4,5,6,7,8};int arr2[][2] = {1,2,3,4,5,6,7,8};cs 17장 내용 정리 더블 포인터가 가리키는 것은 싱글 포인터 더블 포인터(double pointer) 선언1int **dpcs 더블 포인터건, 싱글 포인터건 무조건 메모리 공간의 주소 값을 저장하는 변수이다.따라서 모든 포인터 변수는 4바이트 메모리 공간을 요구한다.다만 차..
[열혈C] 02. Part2 내용 정리 (포인터와 배열의 시작) 에러가 발생하면 기뻐해라!!! 지금의 에러가 그대들을 현명한 프로그래머로 이끌어 줄 것이다. 널(Null) 문자에 대한 이해 문자열을 표현할 때에는 문자열의 끝을 의미하는 '\0'을 문자열 끝에 삽입한다. 이 문자를 가리켜 널(Null) 문자라 하며, 아스키 코드 값은 0이다. 문자열 입력받기 scanf 함수는 공백(스페이스, tab, enter)을 기준으로 데이터 수를 결정짓는다. 따라서 My Sweet Home이라고 입력되면 My, Sweet, Home 세 개의 문자열을 입력한 샘이다. 포인터 메모리 공간의 주소 값을 저장하는데 사용하는 변수를 포인터라 한다. 포인터가 변수라는 것을 강조하기 위해서 '포인터 변수'라는 표현을 쓴다. 포인터는 const 키워드에 의해서 상수화되기도 한다. (뒤에서 자세..
[열혈C] 01. Part1 내용 정리 (C 언어의 기본) 연산자의 우선 순위와 결합성 C 언어의 기본 자료형 실수 자료형의 정밀도 보편적으로 정수는 int형으로 표현하는데, 실수는 보편적으로 double형을 쓴다. float형 보다는 정밀도가 높으면서 long double형 보다는 부담이 덜 되기 때문이다. double형으로 데이터를 받는 경우 서식 문자는 %lf를 사용한다. 정수형 자료형의 특성 기본 자료형 앞에 unsigned를 붙이는 경우 MSB까지도 데이터의 크기를 표현하는데 사용하게 되므로 데이터의 표현 범위가 양의 값으로 두 배가 된다. 기본 자료형 중에서도 정수형 자료형(char, short, int...)에만 붙일 수 있다. 실수형 자료형에는 붙일 수 없음에 유의하자! 리터럴 (literal) 상수 이름이 없는 상수를 가리켜 '리터럴 상수'라 한..