본문 바로가기

전체 글53

[C언어] 제 14 강 : 포인터의 기본적인 개념 드디어 C언어의 '포인터'에 입문할 차례입니다. 사실 손으로 쓰면 이해하기 쉽도록 그림이라도 그리기 편할텐대 이놈의 귀차니즘이 포토샵을 켜질 않내요...... 나름 개인적인 복습이니까~ 라는 사고방식이 합리화를 시키기는 하지만 뭔가 걸리적 거리기는 합니다. 포인터란 무엇일까? 결론적으로 포인터는 주소 값을 담고 있는 변수이다. 그렇다면 왜 굳이 포인터라는 어려운 개념을 알아야 할까? 간단합니다. 좀 더 프로그램에 깊숙히 접근해서 보다 더 자유롭게 프로그래밍을 하기 위해서 입니다. 일반적으로 메모리는 1바이트 블록 단위로 아주 자자자자잘하게 나뉘어 있습니다. 각각의 바이트마다 고유한 주소값을 가지고 있습니다. 즉 0x11번지라고 하면 1바이트, 8개의 비트를 가리키고 있습니다. 그럼이제 실제 프로그래밍 코.. 2012. 1. 19.
[C언어] 제 13 강 : 배열 올해 구정은 빠르네요.... 보통 2월에 있지 않았나요~? 엊그제 계좌에 365일이 입금되었는대 벌써 18일을 써버렸습니다...ㅠㅠㅠ 잔액을 좀 더 알차게 사용해야겠습니다.. 오늘은 C언어 배열에 대하여 공부해보도록 하겠습니다. 우리가 변수를 지정하는 것 만큼이나 자주 사용하고 더 나아가 포인터의 개념도 맛볼 수 있기 때문에 중요합니다^^ 배열은 변수의 선언에 있어서 상당히 편리한 역할을 해줍니다. 예를들어 전교생의 성적을 저장해야되는 변수를 선언한다고 생각해봅시다. 천명이고 만명이고 학생 수 만큼의 변수가 필요하겠죠..? 그럼 그 많은 변수를 한땀한땀 선언해주어야 됩니다. 배열은 이러한 부분을 완벽하게 해결해 줍니다. int a = 1, b = 2, c = 3, d = 4; 이러한 변수의 선언은 int.. 2012. 1. 19.
[C언어] 제 12 강 : 비트연산자 비트 연산자는 비트단위로 연산을 진행하는 연산자입니다. 오직 정수범위에서만 해당되며 실수에 대해서는 비트 연산이 불가능합니다. 비트 연산자는 대부분이 이항 연산자입니다. -비트연산자 & : 비트단위로 AND 연산을 한다. | : 비트단위로 OR 연산을 한다. ^ : 비트단위로 XOR 연산을 한다. ~: 단항 연산자이며 피연산자의 모든 비트를 반전시킨다. -비트 쉬프트 연산자 > : 피연산자의 비트 열을 오른쪽으로 이동시킨다. 예를 들어보겠습니다. n1과 n2라는 두 개의 피연산자가 있습니다. n1은 0101, n2는 1100 일때 n1 & n2는 각각의 비트를 AND연산하게 됩니다. 0101 1100 & (AND연산 진행) = 0100 이 되겠죠~? 이번에는 ~n1 연산을 해봅시다. 피연산자의 모든 비트.. 2012. 1. 16.
[C언어] 제 11 강 : 서식문자 printf 와 scanf의 서식문자에 대해서 좀 더 자세하게 알아보도록 하겠습니다. 간단한 설명은 지난 강의에서 소개한적이 있습니다. printf문과 scanf문의 서식문자는 비슷하면서도 다르므로 혼동할 수 있으니 주의하시구요~~~ [Printf함수의 서식문자] %d : int (부호 있는 10진수 정수) %u : unsigned int (부호 없는 10진수 정수) %o : unsigned int (부호 없는 8진수 정수) %x, %X : unsigned int (부호 없는 16진수 정수) %f : double (10진수 방식의 부동소수점 실수) %e, %E : double (e 또는 E 방식의 부동소수점 실수) %g, %G : dobule (값에 따라 %f와 %e사이에서 선택) %c : int (값에.. 2012. 1. 16.
[C언어] 제 10 강 : 메모리 구조와 변수 메모리 구조는 C언어를 공부하는데 아주 중요한 부분을 차지합니다. 포인터나 배열을 다룰때도 이러한 개념이 바탕이 되기때문에 피할 수 없는 부분인거죠... 피할 수 없으면 즐기는것이 자신이 원하고자 하는 바를 이룰 수 있게 하는 필수 요소입니다. 어떤분은 자신이 문제를 풀다가 틀리고, 모르는 부분이 나올때 희열감을 느낀다고 하더랍니다. 자신이 모르고 배워야하는 부분이 아직 남아 있다는 것을 느끼기 때문이라더군요... 존경스럽습니다....ㅠㅠㅠㅠ... 여기서 메모리라고 함은 하드디스크, 램, 레지스터, 캐쉬를 포합니다. 그럼 이러한 모든 메모리를 이해해야되냐구요? 절대 아닙니다. 고맙게도 우리가 사용하는 운영체제는 이러한 메모리들을 통합하여 '가상 메모리'라는 가짜 메모리를 만들어줍니다. 즉, 가상 메모리 .. 2012. 1. 12.
[C언어] 제 9 강 : 문자의 표현 사실 컴퓨터는 바이너리코드 외에는 아무것도 모르는 상태입니다. 우리가 실제로 사용하는 영어나 한글같은 언어는 전혀 모르죠. 내부적으로는 모두 2진법을 사용하여 문자를 표현하는 것 뿐입니다. 오늘은 그러한 컴퓨터의 문자 표현방법을 알아보도록 하겠습니다^-^!! 아스키코드(ASCll)? 사람은 언어를 사용하고 컴퓨터는 숫자를 사용합니다. 컴퓨터가 사람이 사용하는 언어를 사용하기 위해서는 숫자를 언어로 표현해주어야 하는데 이것을 정의한 표준이 아스키코드입니다. 예를들어 '문자 A를 표현할때는 숫자 65를 사용합니다!'라고 아스키 코드에서는 정의하고 있습니다. 아스키코드 문자는 총 128개가 정의되어 있습니다. 컴퓨터는 2진법을 사용하므로 2의 7제곱이면 128이므로 7개의 비트만 있으면 모든 아스키코드를 표현.. 2012. 1. 12.
[C언어] 제 8 강 : 제어문 프로그램의 흐름을 제어해주는 제어문에 대해서 알아보겠습니다. 대표적으로 조건문이나 반복문이 있지요~ 1. if 문 프로그래머가 정의한 조건을 만족시길때만 실행하도록 해주는 함수입니다. 예를들어 '내가 컴퓨터를 가지고 있다' 라는 조건을 만족하면 특정 기능을 수행하고 그렇지 않다면 수행하지 않도록 합니다. int main(void) { int n = 10; if( n>5) { printf("5보다 크다.\n"); } } n이라는 값은 5보다 크므로(n>5) printf문을 수행합니다. 만약 n이 5보다 크지 않다면 printf문은 무시가 되겠죠~? 사실 if문은 else문과 항상 같이 다닙니다. else문은 if문을 만족시키지 않을때 수행됩니다. int main(void) { int n = 1; if( n.. 2012. 1. 11.
[C언어] 제 7 강 : scanf함수 키보드 입력에 사용되는 scanf함수에 대하여 알아보겠습니다. 사실 scanf함수는 배열과 포인터가 바탕이지만 자주 사용되는 함수이므로 미리 배워보도록 하겠습니다. scanf함수는 printf함수와 매우 비슷하면서도 상반된 기능을 제공합니다. scanf("%d", &number); 언뜻보기에도 printf함수와 비슷하죠? 위에 나타난 함수의 이미는 키보드로부터 정수를 입력받아서, 변수 number에 저장하라는 뜻입니다. 단, 여기서 저장할 변수 앞에는 '&'기호를 붙여주는데요, 사실 이 기호는 연산자입니다. 해당 변수의 주소값을 얻게되는거죠... 여기서부터는 나중에 배울 포인터의 개념에 해당하므로 기회가 된다면 나중에 좀 더 자세하게 알아보도록 하겠습니다. 즉, scanf함수는 printf함수와는 달리 .. 2012. 1. 11.
[C언어] 제 6 강 : 함수 엊그제 부터 감기 때문에 죽겠네요 ㅠㅠㅠㅠ 이번주는 그냥 쉴까 했지만 한번 쉬면 쭉~~~쉴까 두려워 포스팅을 결심했습니다. 오늘 공부해볼 내용은 함수입니다. C언어를 포함한 프로그래밍 언어의 이해를 위해서는 함수는 빠질 수 없는 부분입니다. 함수를 구성하는 기본적인 사항으로는 1. 함수의 이름 2. 함수의 입력 3. 함수의 출력 4. 함수의 기능 총 4가지가 존재합니다. 이러한 기본적인 사항이 모여 함수를 만들어내죠. int fuction (int n) { n++; return n; } 위와 같은 예제를 보겠습니다. 바로 저것이 함수입니다~ 함수의 4가지 사항을 모두 포함하고 있는 짧고 중요한 예제입니다. {, } 중괄호 안에 함수의 기능을 표현합니다. fuction 이라는 이름이 함수의 이름이구요. 함.. 2012. 1. 11.
[C언어] 제 5 강 : 연산자 제5강에서는 C언어에서 자주 사용하는 '연산자'에 대해서 알아보도록 하겠습니다^-^;; 내용이 생각보다 많아서 간단하게 설명하도록 하겠습니다! 1. 대입 연산자 & 산술 연산자 일단 2개의 피연산자를 필요로 하는 연산자를 '이항 연산자'라고 합니다. C언어에서 사용하는 연산자는 대부분 이항 연산자입니다. 물론 단항 연산자도 존재하는대 좀 이따가 설명하도록 하구요~ = : 오른쪽에 있는 값을 왼쪽에 있는 변수에 대입합니다. ex) int value = 10; + : 2개의 피연자의 값을 더합니다. ex) int value = 10 + 20; - : 왼쪽의 값에서 오른쪽에 있는 값을 빼줍니다. ex) int value = 20 - 10; * : 2개의 피연자의 값을 곱합니다. ex) int value = 1.. 2012. 1. 7.
[C언어] 제 4 강 : 자료형 이번 강의에서 공부해볼 내용은 자료형과 변수에 대한 내용을 좀 더 심도 있게 다뤄볼 생각입니다^-^ 1. 정수형 정수를 표현하는 자료형은 여러가지가 있습니다. 일단 간단하게 정리해보도록 하겠습니다. char : 1 byte long : 4 byte short : 2 byte long long : 8 byte int : 4 byte 이렇게 표현이 됩니다. 예를 들어 자료형 int 는 정수를 4바이트로 표현한다! 라는 이야기 입니다. 크기가 클 수록 표현 할 수 있는 수의 범위가 많아지겠죠? 언더플로우와 오버플로우를 설명하겠습니다. 둘다 비슷한 개념이지만 단어의 뜻 대로 언더는 밑으로 오버는 위로 표현범위가 넘처나는 것을 뜻하는데요 이번 에도 int 형을 예로 들면 만약 int 형이 표현할수 있는 범위가 -.. 2012. 1. 5.
[C언어] 제 3 강 : 데이터의 출력 #include int main(void) { int n8 = 010; int n10 = 10; int n16 = 0x10; printf(" 8진수 : %o \n",n8); printf(" 10진수 : %d \n",n10); printf(" 16진수 : %x \n",n16); return 0; } 위의 소스 코드를 살펴 봅시다. int형인 변수 n8, n10, n16에 8진수, 10진수, 16진수의 숫자를 저장했습니다. int n8 = 010; 이 부분에서 숫자 앞에 0이 붙었죠? 그럼 8진수로 인식합니다. int n16 = 0x10; 여기서는 숫자 앞에 0x가 붙어 있습니다. 그럼 16진수로 인식합니다. 즉 n8에는 8진수 10, n16에는 16진수 10이 저장되어 있다는 겁니다~ 그 다음으로는 pri.. 2012. 1. 4.