Programming Language/C++(36)
-
[C++] 주석(Comment), 세미콜론(;)
아래 링크 클릭 시 해당 본문으로 이동주석(Comment)세미클론주석(Comment)• 코드에 대한 설명을 추가적으로 적고 싶을 때 사용한다. ex) 법적인 내용, 코드에 대한 중요한 정보, 코드의 역할 및 의미 등주석 종류 한 줄 / 여러 줄설명// 한 줄• 같은 줄에 있는 문자열을 주석 처리한다./* */ 여러 줄• /*와 */ 사이에 있는 문자열을 주석 처리한다.// \ 여러 줄• 한 줄 주석(//) 뒤에 \를 쓰면 그 다음 줄도 주석 처리된다.• '\'를 쓰지 않으면 다음 줄은 주석처리 되지 않는다.#if 0#endif여러 줄• 전처리기를 이용한 주석 기능이다.• #if 0과 #end if 사이에 들어가는 문자열은 전부 주석 처리된다.• if 0 → if 1 : 주석 처리가 해제된다. ▷ 예시/..
2024.03.25 -
[C++] 문자
아래 링크 클릭 시 해당 본문으로 이동문자char, char*, char[]wchar_tchar8_tchar16_tchar32_t표현 방식이 정수형인 문자형자료형크기 (byte)char1wchar_t2char8_t1char16_t2char32_t4• 문자에 해당하는 값을 저장하는 정수형이다.• ASCII에 속하지 않는 문자(한글, 중국어, 이모지 등)는 `wchar_t`, `char16_t`, `char32_t`와 같은 문자형을 사용하며, UTF-16 또는 UTF-32와 같은 인코딩을 활용한다.• C++에서는 유니코드 문자 처리를 위해 `char8_t`, `char16_t`, `char32_t`가 도입되었다.이는 유니코드 인코딩에 최적화되어 있다.더보기VS 프로젝트 기본 속성은 유니코드이다.(솔루션 탐색..
2024.03.24 -
[C++] namespace, using, 입출력 구현 (cin, cout)
`main.cpp`#include // *네임 스페이스namespace MYSPACE{ int g_int; // 전역 변수}namespace OTHERSPACE{ int g_int;}// *using// 개별적, 세부적으로 해제using std::cout;using std::wcout;using std::cin;using std::endl;// *endl// endl도 함수이다.// 이 함수가 호출되면 커서가 아래로 하나 내려갈 뿐이다.// 이 함수는 operator >>와 operator > (int& _idata) // _idata는 해당 멤버 함수 내의 지역 변수이다. // int a = 0; // mycout >> a; // a에 입력이 되어야 한다. (ex. 100을 입력하면 a에 입력된다...
2024.03.19 -
[C++] 구조체 · 클래스 템플릿으로 리스트 구현
코드를 작성할 때 노드는 구조체로, 리스트는 클래스로 만들었지만, C++에서 클래스와 구조체는 같아졌기 때문에 어떤 것을 사용하든 크게 상관은 없다.구조체도 생성자, 소멸자, 상속이 가능해졌다.단, 클래스와 구조체의 차이점은 범위 지정자의 기본값이 다르다는 것이다.구조체는 public이고 클래스는 private이다. 구조체와 클래스 중 어떤 것을 사용할지 모르겠을 때, 나름의 규칙을 만들면 좋다.ex) 기능이 많지 않을 때(단순히 데이터를 묶어놓고 데이터를 저장하는 등)는 구조체 키워드를, 리스트처럼 컨테이너로써의 복잡한 기능이면 클래스로 선언한다. ※ 구조체 템플릿은 구조체가 아니다.프로그래머는 넣은 데이터가 노드 단위인 것을 알 필요가 없어야 된다.다시 말해서, 리스트에 데이터를 넣을 뿐, 데이터를 ..
2024.03.18 -
[C++] 클래스 (+ 멤버 함수, this 포인터)
아래 링크 클릭 시 해당 본문으로 이동멤버 함수this 포인터클래스(Class)멤버 함수• 클래스가 사용하는 전용 함수 (클래스 내부에 정의된 함수)• 클래스의 객체가 필요하다.멤버 함수를 호출하려면 해당 클래스의 실체화가 되어있는 변수인 객체가 필요하다.• 멤버 함수를 객체를 통해서 호출하면 해당 객체의 주소가 this 포인터로 전달된다.this 포인터클래스의 멤버 함수를 호출 시 호출할 객체(instance, 인스턴스)를 찾으려면 this 포인터를 사용해야 한다.• 생략되어 있지만 모든 멤버 함수에 추가되어 있는 매개 변수로, 해당 멤버 함수를 호출한 객체의 주소를 가리키는 상수 포인터이다.this 포인터에 저장된 주소(현재 객체의 주소)를 수정할 수 없지만, const로 표시되지 않으면 가리키는 개..
2024.03.18 -
[C++] 정렬과 버블 정렬 구현, 함수 포인터
데이터 정렬(Sort) 함수 - 버블 정렬• 버블 정렬은 2개씩 비교하면서 오름차순 또는 내림차순으로 정렬한다.• 역순일 때 최악인 이유 : 처음에 제일 큰 숫자만 제일 오른쪽으로 가고 나머지는 뒤죽박죽 섞여있는 경우 데이터의 개수만큼 비교해야 한다.함수 포인터• 함수의 주소를 저장할 수 있는 변수로, 함수를 변수처럼 다룰 수 있게 해 준다.• 저장된 함수의 주소를 통해 다른 함수 안에서 동적으로 해당 함수를 호출할 수 있다.ex) 정렬 함수를 여러 개 만들고, 이 중 하나가 필요할 때마다 동적으로 선택해서 실행할 수 있다.• 코드의 유연성과 재사용성을 높여준다.// 반환타입(*포인터이름)(매개변수타입);void (*funcptr)(int);• 반환 타입 : 함수가 반환하는 값의 타입• 포인터 이름 : ..
2024.03.17 -
[C/C++] 연결 리스트 구현
연결 리스트 (Linked List)• STL(Standard Template Library, 표준 템플릿 라이브러리)의 컨테이너 중 하나로, 각 노드들이 포인터로 연결되어 있는 데이터 구조이다.• 노드(Node, 마디) : 데이터 하나를 저장하는 단위 • 노드에는 저장하고자 하는 데이터와 다음 노드를 가리키는 주소가 존재한다.• 데이터를 하나 추가할 때마다 힙 영역에 데이터 하나를 저장할 만큼 메모리 공간을 만든다.노드는 프로그램이 진행되는 동안 존재해야 되기 때문에 힙 영역에 만들어야 한다.즉, 동적할당을 사용해야 한다.• 시작 데이터만 알면 계속해서 다음 데이터를 찾아갈 수 있다.시간 복잡도(Big-O)• 최악의 경우 배열의 길이만큼 걸릴 때를 대비하여 시간 복잡도를 확인할 때 빅오 표기법을 사용한..
2024.03.17 -
[C++] 가변 배열
• 동적 배열이라고도 하며, 메모리 공간을 계속 확장하면서 데이터를 넣는 형태의 자료구조이다.• 가변 배열을 사용하려면 동적 할당 즉, 힙 영역을 사용해야 한다.• 가변 배열을 잘 설계해 놓으면 여러 개 만들 수 있다.▶ 정적 배열 vs. 가변 배열 정적 배열(Static Array)가변 배열(Dynamic Array, 동적 배열)설명배열의 크기가 고정되어있으며, 컴파일 시 크기가 결정된다.배열의 크기를 조절할 수 있다.프로그램 실행 중 메모리를 힙 영역에 할당하여 생성된다.메모리 영역스택 또는 데이터 영역에 저장된다.힙 영역에 저장된다.특징한 번 크기가 결정되면 프로그램 실행 중 크기를 변경할 수 없다.지역 변수로 선언된 정적 배열은 스택 영역에 저장된다.static 키워드를 사용하거나 전역 변수로 선..
2024.03.17