그 놀라운 이야기들...

살아 숨쉬는 코드들을 만들어 봅니다. 조심하세요. 날아갈 수도 있으니...

삶이 어떻게 더... 완벽해~
반응형

C언어강좌 13

[C언어:초급-015] 제어문 - for

1. for 반복문 제어문들 중 for는 반복문 종류에 속한다. for문 다음에 오는 코드라인 혹은 블럭을 조건에 맞게 반복한다. 사용법은 다음과 같다. for(;;) 반복할 코드라인 혹은 블럭 어떤 절차를 반복하기 위해선 처음엔 작업이 필요하다. 일종의 준비작업이라 하겠다. 그리고 나서 어떤 조건이 충족 될 때까지 반복할 지를 정한다. 이를 이라 한다. 끝으로 매번 반복할 때마다 을 통해 과 관련된 어떤 변화가 필요하다. 그래서 결국에 가서는 반복조건이 충족되어 반복문을 빠져나갈 수 있어야 한다. 그렇지 않으면 반복은 무한루프에 빠져 우주가 멸망할 때까지 멈추지 않게 될 것이다. 다음의 사용예를 보자 for(int idx = 0; idx < 10; idx++) { printf("current index..

[C언어:초급-013] 문자열 조작

앞서 ‘배열과 포인터’ 편에서 우리는 문자열이 char 타입의 배열임을 알았다. 여기서는 그 특성을 이용해 문자열을 조작하는 방법에 대해서 좀 더 깊이 들어가고자 한다. C는 Low Level 언어이다 보니 거의 모든 것들을 직접 구현해 주어야 한다. 문자열 조작에 관해서도 직접 개발자가 메모리를 조작하는 기분으로 문자열을 다룬다 생각하자. 1. 메모리 확보 문자열을 다루기 위해서는 우선 충분한 메모리를 확보하고 그 메모리 안에서 문자열들을 읽고 쓰는 작업을 해야한다. 만약에 확보된 메모리를 벗어난 곳에 문자열을 읽거나 쓰려고 했다가는 프로그램이 폭팔해 버릴 수도 있으니 주의하자. 문자열 작업을 위한 메모리 확보 방법은 간단다. char 타입 배열을 사용하면된다. char buf[1024]; // 102..

[C언어:초급-012] 배열과 포인터

우리는 앞에서 배열을 배웠었다. 포인터도 배웠다. 오늘은 배열과 포인터의 상관관계에 대해서 알아볼 것이다. 조금 어려울 수도 있을 것이다. 그렇더라도 한 번 읽고 지나가면 다음에 진행될 문자열 조작 부분을 이해하는데 도움이 될것이다. 1. 배열변수는 포인터다. 모든 곳에서 정확한 표현은 아니지만 C에서 만큼은 맞는 말이다. 아래와 같은 경우 int (4바이트) 크기의 메모리를 5개, 즉 20바이트 만큼의 메모리를 확보해 4바이트 단위로 숫자를 채운 것이다. int score[5] = {10, 20, 30, 40, 50}; 여기서 배열변수 score는 자기가 확보한 메모리의 시작점을 담고있는 포인터인 것이다. 그러므로 배열변수 int score[] 는 int* score 와 같은 의미인 것이다. 다음의 예..

[C언어:초급-011] 문자열

1. 문자열 타입? 많은 분들이 의아해 할지 모르지만, C 에는 문자열 타입이란 없다. C 에서 타입이라고 하면 정수, 실수, 포인터, 구조체 정도만 있을 뿐이다. 그럼 문자열은 어떻게 처리를 해야할까? 그 방법을 알아보도록 하자. 2. 문자열 구조 우리는 상수 강좌에서 문자열 상수의 표현법을 배웠었다. 그러나 실질적으로 사용되는 문자열의 메모리 구조는 다음과 같다. "Hello" => [H] [e] [l] [l] [o] [0] // 마지막 숫자 ‘0’은 문자열의 끝을 알려주는 표시. 문자열 종결자. 그러므로 어떤 문자열을 사용하기 위해서는 메모리 상에 그 ‘문자열의 길이’ + 1 개의 바이트 더 필요하다. 만약에 마지막 바이트에 ‘0’ 숫자가 없다면 컴퓨터는 문자열이 다음의 ‘0’ 숫자가 나올 때까지 ..

[C언어:초급-010] 포인터 기초

1. 변수의 포인트(주소) 알아내기 C언어의 가장 큰 특징이자, 장점이자, 단점인 포인터에 대해서 알아보자. 포인터(Porinter)란 말 그대로 풀이하면 ‘지정자’가 될 것이다. 요즘 흔히들 많이 쓰는 레이저 포인터를 생각하면 이해가 될 것이다. 풀어 애기하자면 컴퓨터 메모리 상의 특정 위치를 가리키는 변수가 바로 포인터이다. 아래는 정수형 변수의 포인트 값(메모리상의 주소)을 포인터에 저장하는 예이다. int num = 10; // [0][0][0][10] : 4바이트 정수형 변수 int* ptr = &num; // ^ 의 주소를 포인터(ptr)에 저장 먼저 'num' 이라는 변수에 10이라는 수를 저장한다. ‘num’ 이라는 정수형 변수는 곧 4바이트 크기를 가진 저장공간(메모리)이다. 이 저장 공..

[C언어:초급-009] 배열

1. 배열이란 배열이란 같은 타입의 변수 공간 여러개를 확보해 하나의 변수로 지정하고 각각의 공간은 인덱스(번호)로 지정해 읽거나 쓸수 있도록하는 구조이다. 인덱스는 0부터 시작하며 최대로 지정할 수 있는 인덱스의 숫자는 공간 갯수 - 1 이다. 인덱스 최대치를 벗어나는 인덱스를 지정하여 읽거나 쓰게 될 경우 오류가 발생하거나 프로그램에 문제를 일으키게 된다. 배열의 정의 방법은 다음과 같다. []가 늘어 날수록 차수가 늘어나며 복잡해 진다. 그러나 보통은 2차원 이상은 사용할 일이 없다고 보면 된다. 타입 배열변수[갯수][갯수]…; // 배열 선언하는 법 // 인덱스는 0 ~ (갯수-1) 까지의 범위이다. 배열변수[인덱스] = 값; // 배열에 값을 저장하는 법. 일반변수 = 배열변수[인덱스]; // ..

[C언어:초급-008] 상수

1. 상수란 상수란 변할 수 없는 고정된 값을 말한다. 상수는 주로 어떤 변수를 초기화 할 때, 혹은 어떤 값이 반복적으로 쓰여질때, 또는 사회 통념상 정해진 값등을 표현할 때 주로 쓰인다. 2. 상수의 종류 상수는 다음과 같이 네가지 종류가 주로 사용되어진다. 정수, 실수, 문자, 문자열. a. 정수 상수 : 우리가 일상적으로 사용하는 일반적인 정수를 그대로 사용한다. Ex) int idx = 0; // 상수 0으로 초기화 int weeks = days / 7; // 변수 'days'를 상수 '7'로 나눈다. * 16진수(HEX) 표현법 C에서는 정수 상수를 가끔는 16진수로 표현하는 경우가 있다. 비트 연산등을 하는 경우에는 오히려 16진수로 표현해야 이해가 더 쉬워지는 경우다. 16진수를 표현할 땐..

[C언어:초급-007] 연산자2-비교, 논리

0. 논리값 다음의 연산자들에 대해서 설명하기 전에 먼저 C에서 논리값을 어떻게 다루는 지에 대해서 먼저 이해할 필요가 있다. 논리값이란 true(참)와 false(거짓) 이 두가지 값을 말한다. 이 두가지 값만 표현가능한 타입이 논리타입이다. 요즘 나오는 대부분의 언어들은 이 논리타입이 존재한다. 예를 들어 Java 같은 경우에는 boolean 타입 있어서 true 와 false 두 값 중에 하나의 값을 가질수 있도록 되어있다. 그러나 C에는 논리타잆이 존재하지 않는다. 따라서 별도의 논리값이란 것도 없다. C에서 논리 표현은 그냥 정수를 사용한다. 보통은 크기가 가장 작은 타입인 char 타입을 사용한다. C에서의 논리 값은 0(false) 과 그 외의 수(true) 로 간주한다. 보통은 0 과 1,..

[C언어:초급-006] 연산자1-산술, 대입, 증감

영어로는 오퍼레이터(operator)라고 하는 연산자는, 피연산자(operand)인 데이터를 이용해 어떤 결과값을 도출해 내기 위한 최소한의 기능들을 가진 기호들을 말한다. 연산자에는 다음과 같이 여러 종류가 있다. 이번 페이지에서는 산술연산자, 대입연산자, 증감연산자까지만 다뤄 보도록 하자. 산술연산자 : +, -, *, /, % 대입연산자 : = 증감연산자 : ++, — 논리연산자 : !, &&, || 비교연산자 : ==, !=, >, >=, ,

[C언어:초급-004] 변수명 작성규칙

C언어의 변수명 작성 규칙에 대해서 얘기하기 전에 먼저 키워드(예약어)에 대해서 알아둘 필요가 있다. * 키워드(예약어) C언어에서 특정한 목적과 기능을 가지고 이미 정해진 단어들이다. 예를 들면 for, if, switch, case 등, 주로 제어문들이나 sizeof와 같은 기정의 함수들 또는 char, int, float 과 같은 타입명등이 되겠다. 이 키워드들은 각자의 고유의 기능을 위해서만 사용되어질 수 있고 함수나 변수명등으로 정의 되어질 수 없다. 1. 변수명 작성 규칙 a. 키워드(예약어)를 변수명으로 사용할 수 없다. b. 영문자(대문자, 소문자), 숫자, 밑줄문자의 조합으로 작성할 수 있다. c. 첫 글자는 반드시 영문 대문자나 영문 소문자, 밑줄문자로 시작해야 한다. d. 영문자는 대..