본문 바로가기

Study

[C++] Class & Object Class & Object 클래스와 구조체의 차이점은 struct 키워드 대신 class 키워드를 사용한다는 것이다. 이러한 클래스는 앞선 구조체와 같은 방법으로는 호출할 수 없다. 클래스는 정의 과정에서 각각의 변수 및 함수의 접근 허용범위를 별도로 선언해야 한다. C++의 접근제어 지시자는 세가지가 존재한다. public: 어디서든 접근허용 protected: 상속관계에 놓여있을 때, 유도 클래스에서의 접근허용 private: 클래스 내에서만 접근허용 #include #include using namespace std; namespace STUDENT_CONST { enum { NAME_LEN = 9 }; } class Student { private: char studentName[STUDENT_C.. 더보기
[C++] Call by value / Call by reference Call-by-value: 값을 인자로 전달하는 함수의 호출방식 void SwapByValue(int num1, int num2) { int temp = num1; num1 = num2; num2 = temp; // Call-by-value } Call by reference: 주소 값을 인자로 전달하는 함수의 호출 방식 void SwapByRef(int *ptr1, int *ptr2) { int temp = *ptr1; *ptr1 = *ptr2; *ptr2 = temp; // Call-by-reference } 더보기
Memory Structure 메모리 구조Code 영역: 프로그램의 코드가 저장되는 영역Data 영역: 전역변수 & 정적변수가 저장되는 영역Stack 영역: 함수 호출과 관계되는 지역변수 및 매개변수가 저장되는 영역,수의 호출과 함꼐 할당되며 호출이 종료되면 소멸Stack의 Push/Pop동작으로 데이터를 저장하고 인출Stack의 LIFO 방식에 따라 동작메모리의 높은 주소에서 낮은 주소 방향으로 할당Heap 영역: 사용자가 직접 관리가 가능한 메모리 영역메모리 공간이 동적으로 할당되고 해제됨메모리의 낮은 주소에서 높은 주소의 방향으로 할당 더보기
[C++] Const const const int num = 10; 변수 num을 상수화 하여, 변경할 수 없게 만듦 const int* ptr1 = &val2; 포인터 ptr을 이용하여 val1의 값은 변경 불가, 하지만 포인터를 이용하지 않고 val = num와 같이 포인터의 위치는 변경이 가능 int* const ptr2 = &val2; 포인터 ptr2가 상수화 됨, 포인터의 주소 변경이 불가능함 const int * const ptr3 = &val3 포인터 ptr3가 상수화 되었으며, ptr3를 이용해서 val3의 값을 변경할 수 없음 Const 참조자의 또 다른 특징 상수화된 변수의 경우 참조자 선언은 다음과 같이 할 필요가 있다. const int num = 20; const int &ref = num; 이렇게 선.. 더보기
[C++] Difference of C & C++ 01. Input/Output C C++ Input scanf cin Output printf cout Header stdio.h iostream Speed > C++의 endl은 \n보다 속도가 느리다. 그 이유는, endl의 경우 buffer를 지워주는 flush 과정이 존재하기 때문이다. ios_base::sync_with_stdio(bool sync); C++의 경우, 기본적으로 C와 표준 스트림이 연결되어 있다. 이 과정에서 속도가 느려지는 현상이 생긴다. 다만, 위와 같은 코드를 이용하여 속도를 늘리는 방법 보단, scanf와 printf를 사용하는 편이 속도 상승에 유리하다. ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); .. 더보기
Data type Data Type Bytes Other Names Range int 4 signed -2,147,483,648 to 2,147,483,647 unsigned int 4 unsigned 0 to 4,294,967,295 __int8 1 char -128 to 127 unsigned __int8 1 unsigned char 0 to 255 __int16 2 short, short int, signed short int -32,768 to 32,767 unsigned __int16 2 unsigned short, unsigned short int 0 to 65,535 __int32 4 signed, signed int, int -2,147,483,648 to 2,147,483,64 unsigned __int3.. 더보기
Language, Instruction 1. 고급언어/저급언어, 기계어, 어셈블리어, 컴파일 언어, 인터프리터 언어High-Level Language; 고급언어: 사람을 위한 언어(C, C++, Java...)Low-Level Language; 저급언어: 컴퓨터가 직접 이해하고 실행할 수 있는 언어(기계어, 어셈블리어...)컴파일 언어: 컴파일 방식으로 작동하는 프로그래밍 언어컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 (C언어가 대표적)컴파일 언어로 작성된 소스 코드는 컴파일(코드 전체가 저급 언어로 변환되는 과정)을 컴파일러(컴파일을 수행해 주는 도구) 가 진행함컴파일이 성공적으로 수행되면, 개발자가 작성한 소스 코드는 컴퓨터가 이해할 수 있는 저급 언어로 변환된다. 이렇게 컴파일러를 통해 저급 언어로 변환된.. 더보기
Data 1. 데이터 단위와 2의 보수컴퓨터는 이진법 체계로 정보를 해석한다. 이때, 비트 단위로 정보를 해석한다.1Byte8bit1kB1.000byte1MB1.000kb1GB1.000MB1TB1.000GB2의 보수어떤 수를 그보다 큰 2^n에서 뺸 값2. 문자집합, 아스키 코드, 유니코드문자집합컴퓨터가 인식하고 표현할 수 있는 문자의 모음문자 인코딩문자를 0과 1로 변환하는 과정문자 디코딩0과 1로 이루어진 문자 코드를 문자로 변환하는 과정아스키 코드초창기 문자 집합으로, 7비트로 표현된 문자 집합EUC-KR한글 인코딩을 위한 표완성형 인코딩: 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 인코딩 방식조합형 인코딩: 초성을 위한 비트열, 중성을 위한 비트열, 종성을 위한 비.. 더보기