목록Language/C++ (6)
OneDev

▣ 서론 메모리 관리는 언제나 중요한 문제이다. 프로그램이 정확히 실행되기 위해서는 컴파일 시 모든 변수의 주소값이 확정되어야만 했는데, 이를 위해서 프로그램에 많은 제약이 따랐다. 이에 프로그램 실행시 자유롭게 할당하고 해제할 수 있는 힙(Heap) 이라는 공간이 따로 생겼다. 컴파일러에 의해 안정성이 보장되는 스택(Stack) 과 달리 힙은 사용자가 스스로 제어해야 하기 때문에 책임이 다른다. C 언어에서는 힙 상에서의 메모리 할당과 해제를 위해 malloc 함수와 free 함수를 지원하였다면, C++ 언에 차원에서 지원하는 것이 new 와 delete 이다. (물론 C++에서도 malloc 과 free 를 사용할 수 있다) new 는 malloc에 대응되는 것으로 메모리를 할당하고, delete 는..

1. 참조자(레퍼런스)란? C 언어에서는 어떤 변수를 가리키고자 할 때 포인터를 사용해야 했다. C++ 에서는어떤 변수나 상수를 가리키는 또다른 방법을 제공하는데, 이를 참조자(혹은 레퍼런스) 라 한다. 레퍼런스(reference : 참조) 라는 이름에서 알 수 있듯이 참조의 의미를 가지는 자료구조이다. 2. 레퍼런스 변수의 선언 참조자(레퍼런스) 의 선언은 &연산자를 이용한다. 형식 : (자료형)& (참조자 이름); 선언과 동시에 어떤 변수와 초기화 할것인지 명시함 나중에 다른 함수를 참조하도록 변경 불가 변수 선언이 메모리 할당이었다면, 레퍼런스의 선언은 어떤 변수를 참조할지에 대한 선언이라 보면 된다. 위의 사진에서 우리는 int& another_a = a; 라고 적어줌으로써 another_a 는 ..

※ C++ 에서 제공하는 자료형은 크게 두 가지로 나뉜다. 기본 자료형 사용자 정의 자료형 이번 포스팅에서는 어떤 자료형들이 있는지에 대해 대략적으로만 살펴보고, 각 자료형들에 대한 자세한 설명은 나중에 자료형 별로 따로 다루기로 한다. 1. 기본 자료형 C++ 을 포함한 많은 프로그램 언어들은 각 언어마다 기본적으로 제공하는 자료형들이 있다. 이런 자료형들은 변수나 객체의 형식 또는 그 크기를 구분하기 위한 용도로 사용된다. C++ 에서 기본적으로 제공하는 자료형 : 논리형 문자형 정수형 실수형 2. 사용자 정의 자료형 C++ 에서 제공하는 사용자 정의 자료형 : 열거형(enum) 문자열 포인터 배열 구조체 공용체 클래스

※ 목차 main 함수란? main 함수의 인자 (argc, argv) 1. main 함수란 ? → main 함수는 " 프로그램이 실행될 때 운영체제에 의해 호출되는 함수 " 이다. ( 또는 진입(Entry Point) 함수 라고도 한다.) main 함수는 다음과 같은 형식으로 구성되어 있다. int main(void) { 명령문 1; 명령문 2; ... ... return 0; } main 함수의 리턴 자료형은 int 형(정수형)이다. 이 값은 프로그램이 종료될 때 운영체제에 반환되는 값으로, 종료코드(exit code) 라고도 한다. 파일을 찾을 수 없거나 예상치 못한 값이 입력되는 등 프로그램을 더이상 실행할 수 없는 오류가 발생하면 1을 반환하여 비정상적인 종료임을 운영체제에 알린다. 정상적으로 ..
1. C++의 변수선언은 C와 거의 동일하다 변수를 선언하는 방법부터, 선언시 주의해야 할 사항까지 C++의 방법은 C의 방법을 거의 그대로 물려받았다. 변수의 이름을 정할 때 주의해야 할 점들을 복기해보면 다음과 같다: (1) 숫자로 시작 불가 (2) C++에서 사용중인 키워드는 사용 불가 (예 : return 같은 이름 설정 불가) (3) white space 사용 불가 (스페이스바, 엔터, 탭 등 여백은 변수로 설정 불가) 변수를 선언하는 예를 보자 : #include int main() { int a;--> int형 변수 a 선언 char c;--> char형 변수 c 선언 double d;--> double형 변수 d 선언 float f;--> float형 변수 f 선언 return 0; } 변..
1. 이름공간(namespace)이란? 이름공간(namespace) 란 어떤 정의된 객체에 대해 어디에 소속되어있는지 지정해 주는 것이다. 코드의 길이가 늘어남에 따라 중복된 이름을 가진 함수들이 늘어났고, C++에서는 이들을 구분하기 위해 이름이 같더라도 소속된 이름공간(namespace)가 다르다면 다른 함수인 것으로 취급하게 되었다. 예를 들자면 영국에 사는 찰스와 미국에 다른 찰스가 서로 다른 느낌이다. 아래의 예를 보자. std::cout; 위의 코드는 std 라는 namespace 에 저장되어 있는 cout 을 의미한다. 만약 std 없이 그냥 cout 만 적게된다면 컴파일러는 cout을 찾지못한다. 어디에 소속된 cout인지 알 길이 없기 때문이다. 2. namespace를 정의하는 방법 n..