분류 전체보기(69)
-
[C/C++] 연결 리스트 구현
연결 리스트 (Linked List)• STL(Standard Template Library, 표준 템플릿 라이브러리)의 컨테이너 중 하나로, 각 노드들이 포인터로 연결되어 있는 데이터 구조이다.• 노드(Node, 마디) : 데이터 하나를 저장하는 단위 • 노드에는 저장하고자 하는 데이터와 다음 노드를 가리키는 주소가 존재한다.• 데이터를 하나 추가할 때마다 힙 영역에 데이터 하나를 저장할 만큼 메모리 공간을 만든다.노드는 프로그램이 진행되는 동안 존재해야 되기 때문에 힙 영역에 만들어야 한다.즉, 동적할당을 사용해야 한다.• 시작 데이터만 알면 계속해서 다음 데이터를 찾아갈 수 있다.시간 복잡도(Big-O)• 최악의 경우 배열의 길이만큼 걸릴 때를 대비하여 시간 복잡도를 확인할 때 빅오 표기법을 사용한..
2024.03.17 -
[C++] 가변 배열
• 동적 배열이라고도 하며, 메모리 공간을 계속 확장하면서 데이터를 넣는 형태의 자료구조이다.• 가변 배열을 사용하려면 동적 할당 즉, 힙 영역을 사용해야 한다.• 가변 배열을 잘 설계해 놓으면 여러 개 만들 수 있다.▶ 정적 배열 vs. 가변 배열 정적 배열(Static Array)가변 배열(Dynamic Array, 동적 배열)설명배열의 크기가 고정되어있으며, 컴파일 시 크기가 결정된다.배열의 크기를 조절할 수 있다.프로그램 실행 중 메모리를 힙 영역에 할당하여 생성된다.메모리 영역스택 또는 데이터 영역에 저장된다.힙 영역에 저장된다.특징한 번 크기가 결정되면 프로그램 실행 중 크기를 변경할 수 없다.지역 변수로 선언된 정적 배열은 스택 영역에 저장된다.static 키워드를 사용하거나 전역 변수로 선..
2024.03.17 -
[C++] 동적 할당, malloc()/free() vs. new/delete
아래 링크 클릭 시 해당 본문으로 이동정적 할당 vs. 동적 할당malloc()/free() vs. new/deletemalloc()/free()new/deletemalloc()는 free()를, new는 delete를 사용해야 하는 이유와 그렇지 않을 경우 발생하는 문제정적 할당 vs. 동적 할당1) 정적 할당• 프로그램 실행 전 컴파일 단계에서 메모리 공간을 할당받는 것프로그램 실행 전에 메모리의 크기가 결정되고 할당된 메모리는 운영체제가 알아서 해제시킨다.장점• 메모리 누수를 걱정할 필요가 없다. ➜ 할당한 메모리는 운영체제가 알아서 해제한다.단점• 메모리 공간의 크기가 정해져있어서 프로그램 실행 중에 수정할 수 없다. ➜ 메모리 공간을 낭비할 가능성이 있다.[ ] : 메모리 공간처음에 [100..
2024.03.15 -
[C++] 아스키(ASCII) 코드
문자형(char, wchar_t 등)에 정수값을 넣으면 문자를 표현하는 자료형이기 때문에 정숫값과 그 정수에 대응하는 문자까지 저장한다.여기서 문자는 아스키(ASCII) 코드값을 뜻한다.아스키(ASCII) 코드• 영문 알파벳을 사용하는 대표적인 문자 인코딩이다.C/C++는 아스키 코드를 이용하여 문자를 인코딩한다. 인코딩(Encoding)• 입력한 문자를 컴퓨터가 이용 가능한 신호로 만드는 것쉽게 말해서 우리가 사용하는 문자나 기호를 컴퓨터가 읽을 수 있는 2진수로 변환하는 것이다.int main(){ // 크기가 1byte인 자료형 int i = 1; // 1 bool b = 1; // true char c = 1; // 1 '\x1' // 크기가 2byte인 자료형 short ..
2024.03.14 -
[C++] void 포인터(void*)
void• 함수에 반환 타입이 없을 때 사용void Func(){ int a = 0;}void*• 포인터가 가리키는 곳의 타입(자료형)이 정해지지 않았을 때 사용한다.가능불가능• 모든 타입의 변수(주소) 저장• 역참조• 주소 연산▶ 가능void* pVoid = nullptr;`pVoid`가 가리키는 곳의 타입이 정해지지 않았기 때문에 변수(주소)가 어떤 타입이든 다 저장할 수 있다.즉, int형이든 double형이든 상관이 없다는 뜻이다.int main(){ // 자료형* int* pInt = nullptr; char c = 0; pInt = &c; // 오류 // void* void* pVoid = nullptr; int i = 0; float f = 0.f; dou..
2024.03.14 -
[C++] const와 포인터
아래 링크 클릭 시 해당 본문으로 이동constconst와 포인터1. const 포인터const 포인터에서 주의할 점2. 포인터 const3. const 포인터 constconst와 포인터를 쓰는 이유const• `const` : 변동되지 않는 상수값상수• 값이 고정되어 변하지 않는 수int main(){ 20; 20 = 30; // 오류 => 상수를 상수를 넣을 수 없다. return 0;}l-value, r-value• l-value : 바뀔 수 있는 값 (변수)• r-value : 바뀔 수 없는 값 (상수)상수는 변수처럼 값을 변경할 수 없다.상수화• 값이 바뀔 수 없는 상태변수 앞에 붙으면 해당 변수는 상수화가 된다.int main(){ const int cInt = 1..
2024.03.14 -
[C++] 문제 풀어보기[포인터, 변수] (풀이 및 설명 포함)
아래 링크 클릭 시 해당 본문으로 이동포인터 문제나의 문제 풀이정답 및 문제 풀이변수 문제나의 문제 풀이(=정답 및 문제 풀이)주소로 값 변경하기포인터전체 코드#include int main(){ // 1번 문제 short sArr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int* pI = (int*)sArr; int iData = *((short*)(pI + 2)); printf("1번 문제 정답 : %d\n", iData); // 2번 문제 char cArr[2] = { 1, 1 }; short* pS = (short*)cArr; iData = *pS; printf("2번 문제 정답 : %d\n", iData); retur..
2024.03.13 -
[Visual Studio 2019] 'Ctrl+S'로 저장해도 저장 메시지가 뜨는 문제
보통 파일을 저장할 때 `Ctrl+S`로 저장한다. 나도 항상 `Ctrl+S`로 저장해 왔다.Visual Studio에서 저장하고 끄려는데 아래와 같이 저장 확인 메시지가 떴다.초반에는 메시지가 뜨면 저장을 누르면서 넘겼는데 계속 상황이 반복되다 보니 불편해졌다.분명 단축키도 여러 번 눌러보고 [파일] - `저장`도 눌러봤는데 왜 계속 뜨는 걸까?[파일] - `'파일명' 저장`을 찾을 때 다른 저장 방법이 있는지 살펴보던 중, `모두 저장`을 발견했다.`모두 저장`하는 법 : [파일] - `모두 저장`, 단축키로는 `Ctrl+Shift+S`이다.`모두 저장`을 하면 해결될 것 같아서 단축키를 눌러보고 비주얼 스튜디오 닫기 버튼을 눌러봤더니 더 이상 저장 확인 메시지가 뜨지 않는다.혹시 모르니 `Test...
2024.03.13