본문 바로가기

전체 글53

[C++ 언어] 제 2 강 : C++의 레퍼런스 사실 이번장은 1강에 이어 설명하고자 하는 내용을 담았습니다. 레퍼런스에 대한 내용을 주로 설명할 것 입니다~ C++에는 C언에서 존재하지 않았던 새로운 자료형이 등장합니다. bool형이 그것이죠. bool형의 변수는 true와 false둘 중 하나가 될 수 있습니다. 사실 이 값을 int형으로 변환해주면 true는 1을, false는 0을 나타내지만 그냥 bool형 데이터로서 인정을 해주는 편이 더 좋습니다. #include using std::cin; using std::cout; using std::endl; bool trueOrfalse(int i) { if(i>num; result = trueOrfalse(num); if(resutl == true) { cout 2012. 2. 2.
[C++ 언어] 제 1 강 : 기본적인 C++ C언어에 바로 이어서 C++언어로 넘어왔습니다. C언어 학습 후에 공부하게 되는 C++이므로 C언어에서 다루지 않았던 추가적인 내용들, 또는 C언어와 C++언어의 차이점 등에 중점을 두고 공부할 생각입니다. C++언어는 C언어를 포함하고 있습니다. 즉, C++은 C언어가 지니지 않는 문법적 특성도 많이 가지고 있다는 이야기입니다. 참고로 C++언어의 확장자는 .c 가 아닌 .cpp 로, 헤더파일은 #include가 아닌 #include으로 지정해 줘야 되는거 잊지마세요~~ cout 2012. 2. 1.
[C언어] 제 23 강 : 그 외 함수들과 파일 분할 이번 장은 C언어의 마지막 장으로 대표적인 함수들과 파일 분할 방법에 데하여 살펴보고 마치도록 하겠습니다. [수학 관련 함수] : 다음과 같은 함수를 사용하기 위해서는 math.h에 선언되어 있으므로 이를 포함해야 합니다.(#include) double fabs(double x); x의 절대값 반환 double ceil(double x); x보다 작지 않은 최소 크기의 정수 반환 double floor(double x); x보다 크지 않은 최대 크기의 정수 반환 double exp(double x); e^x 값 반환 double pow(double x, double y); x^y 값 반환 double log(double x); logx값 반환 (밑은 e) double log10(double x); log.. 2012. 1. 29.
[C언어] 제 22 강 : 파일 입출력 프로그램이라면 기본적으로 갖춰야 할 요소중에 하나가 데이터의 저장입니다. 우리가 일반적으로 접하는 거의 대부분의 프로그램에서는 데이터의 저장이라는 기능이 다양한 형태로 존재하고 있습니다. 때문에 이번 장에서는 파일에 데이터를 저장하고, 저장한 데이터를 참조하는 방법을 알아보도록 하겠습니다. 우리가 구현한 프로그램과 참조할 데이터가 저장되어 있는 파일 사이에 데이터가 이동할 수 있는 다리를 놓아야 합니다. 컴퓨터 공학에서는 이다리를 '스트림'이라고 하지요 Stream [Program] [Hard Disk] 파일과의 스트림을 형성하는 방법의 fopen 함수 FILE* fopen(const char* filename, const char* mode); 성공 시 해당 파일의 FILE 구조체 포인터, 실패 시 N.. 2012. 1. 28.
[C언어] 제 21 강 : 구조체, 공용체 그리고 열거형 여러가지 데이터를 하나로 묶기 위해 구조체가 등장하였습니다. 예를 들면 X 좌표와 Y좌표, 가로값과 세로값 그리고 높이값, 이름과 주소, 전화번호, 나이등 연관있는 데이터들을 하나로 묶어서 관리하면 참 편하겠죠~? 소프트웨어 개발 과정에서는 표현하는 데이터들은 그룹으로 관리를 하게됩니다. struct MAN { char name[10]; int age; }; MAN은 구조체의 이름이고 중괄호 안에있는 문장들은 구조체 MAN의 맴버입니다. 이러한 정의가 이뤄지고 난 다음부터 MAN은 변수의 선언에 사용되는 자료형의 이름으로 인식이 됩니다. struct MAN boxbop; cf) typedef struct MAN MAN; 이라고 추가로 작성하면 struct MAN boxbop 대신 단순히 MAN boxbo.. 2012. 1. 27.
[C언어] 제 20 강 : 매크로와 전처리기 처음에 설명했던 부분 기억나시나요? 실행파일이 컴파일과 링크의 과정을 거쳐서 만들어지는 것으로 설명했습니다. 실제로는 컴파일 이전에 '전처리'라는 과정을 거치게 됩니다. 즉, 소스파일은 선행처리기에 의해 전처리 과정을 한번 거친 후에 컴파일 거치게 됩니다. 사실 선행처리기가 하는 일은 아주 간단합니다. 우리가 작성해 놓은 선행처리 명령문대로 소스코드의 일부를 수정하는 것이 전부입니다. 지시자 매크로 매크로몸체 위와 같이 선행처리 명령문은 기본적으로 세 부분으로 나뉩니다. 아래 문장을 예로들어 설명하겠습니다. #define A 10 지시자(#define)는 선행처리기에 이어서 등장하는 매크로를 마지막에 등장하는 매크로 몸체로 치환하라는 명령을 내립니다. 즉, A 를 10으로 치환하라는 의미입니다. ex) .. 2012. 1. 27.
[C언어] 제 19 강 : 문자열 관련 표준 함수 [문자열 함수] 1. int puts(const char* s); 성공시 0이아닌 값을, 실패 시 EOF 반환 ex) puts("hello boxbop!"); 2. int putchar(int c); 성공 시 출력된 문자 정보를, 실패 시 EOF 반환 ex) putchar('A'); cf)EOF는 End Of File의 약자로 상수 값은 -1입니다. 파일의 끝을 표시하기 위해 정의된 상수입니다. 3. char* gets(char* s); 성공 시 매개변수로 전달된 값을, 실패 시 NULL 포인터 반환 ex) char str[10]; gets(str); 이함수를 호출하면서 메모리의 주소 값을 인자로 전달하면, 키보드로부터 입력되는 문자열이, 전달된 주소의 메모리에 저장됩니다. 4. int getchar(v.. 2012. 1. 26.
[C언어] 제 18 강 : 메모리 관련 함수와 한정자 포인터와 관련이 있는 내용들을 설명하겠습니다. 여기서 한장자라고 하면 제한을 걸때 사용되는 키워드라고 할 수 있습니다. 포인터의 const 선언 const는 변수를 상수화 하는 용도로 사용이 됩니다. 이번에는 포인터에 적용해보도록 하겠습니다. int number =10; int* ptr = &number; 여기서 const가 들어갈 수 있는 자리는 2군데 있습니다. const int* const ptr = # 포인터 선언 앞에 사용될 수 있고, 포인터 변수의 이름 앞에 삽입될 수도 있습니다. 두 군데 모두 사용할 수도 있습니다. int number = 10; const int* ptr = &number; 이렇게 사용이 된다면 포인터 ptr은 가리키는 대상에 대한 값의 변경이 허용되지 않습니다. 예.. 2012. 1. 26.
[window] 윈도우 CMD 명령어 윈도우 CMD 명령어 같은 경우는 알아두면 편리합니다. 텍스트 유저 인터페이스(TUI)기반으로 단순하지만 강력한 기능을 가지고 있습니다. 사실 명령어는 아주 많지만 기본적으로 자주 사용하는 명령어 몇 가지만 알고 있어도 충분하구요. 간단하게 몇 가지 정리해보겠습니다. 윈도우 7 : 시작->프로그램 및 파일검색->CMD입력 Shift + 마우스 우 클릭->여기서 명령 창 열기(바탕화면에서) 윈도우 xp: 시작->실행->CMD입력 [단축키] Tab : 자동완성 F1 : 직전에 실행한 명령어를 한자씩 입력 F3 : 직전에 실행한 명령어 전체를 입력 F7 : 이전에 실행한 명령어 목록 보기 [CMD의 글자색 변경] color [숫자] (참고로 숫자는 16진수 0~F까지) [명령어] -시스템 help : wind.. 2012. 1. 24.
[C언어] 제 17 강 : 함수의 포인터 활용과 메모리 할당 포인터의 개념은 충분히 이해가 가셨으면 이번엔 포인터의 활용 방법과 메모리에서의 공간 할당을 공부해보겠습니다. call by value & call by reference 포인터를 이용하여 함수 내에서 외부에 있는 변수에 직접 접근이 가능하다. void CallByValue(int number) { number++; } void CallByReference(int* ptr) { (*ptr)++; } 첫 번째 함수와 두 번째 함수의 차이점은 무엇일까요? 가장 눈에 뛰는건 포인터의 사용입니다. 첫 번째는 매개변수를 인자로 사용하지만 두 번째는 포인터를 사용해 주소 값을 매개 변수로 입력 받습니다. 첫 번째 함수는 임시로 함수 내부에서 number이라는 매개변수를 생성합니다. 즉 인자로 10이라는 수, 또는 .. 2012. 1. 24.
[C언어] 제 16 강 : 배열과 포인터, 포인터 연산 새벽인대 잠이 안와서 포스팅이나 하렵니다~~ㅋㅋㅋㅋ 포스팅 하다보면 잠이 오겠죠^-^ 저번 포인터 그리고 포인터 배열 내용에 계속 되는 부분 입니다~ * : 메모리 참조 & : 주소 값 반환 요 2가지 연산자는 저번 시간에 배웠죠~? 복습합시다~! 포인터를 피연산자로 하는 곱셈과 나눗셈은 불가능하지만 덧셈과 뺄셈은 가능합니다. 포인터에서의 덧셈과 뺄셈은 일반적인 산술연산과는 조금 다른 의미를 가지고 있습니다. int number = 1; int* ptr = &number; 여기서 ptr의 값을 10진수로 출력 시켜보고 그리고 ptr++ 을 통해서 값을 증가시켜보고 출력시켜보세요. 결과는 어떻게 나올까요? 처음의 값보다 4가 증가됩니다. 즉 ptr에 1을 더하면 1이 증가해야되지만 4가 증가한다는 얘기입니.. 2012. 1. 22.
[C언어] 제 15 강 : 포인터의 포인터 그리고 포인터 배열 포인터 변수도 변수의 한 형태이기 때문에 선언 시 메모리 영역에 4바이트의 메모리 공간 할당이 이뤄지기 때문에 당연히 포인터 변수 자체애 대한 주소 값도 존재를 하겠죠~? int number = 1; int* ptr = &number; printf("ptr의 저장 값은? %#x", ptr); printf("ptr의 주소 값은? %#x", &ptr); 위의 소스 코드를 출력해보세요~ 분명히 ptr의 저장 값과 주소 값은 다릅니다. ptr의 저장 값은 number변수의 주소 값이고 ptr의 주소 값은 말 그대로 포인트 변수 ptr의 주소 값이겠지요? 그렇습니다. 그리고 이 값을 다시 포인터 형 변수에 저장 할 수 있습니다. 즉, 포인터의 포인터(주소값)을 저장할 수 있는 것이죠^-^!! int number .. 2012. 1. 19.