C++(39)
-
[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 -
[C++] 포인터(Pointer), 포인터 배열
아래 링크 클릭 시 해당 본문으로 이동포인터포인터 배열포인터• 주소를 가리키는(저장하는) 변수• 포인터 변수라고도 한다.포인터라는 개념은 C, C++에 있고 다른 언어에는 없다.• 포인터가 가리키는 곳을 해당 포인터 변수의 자료형으로 해석한다. ex) int 포인터 변수가 가리키는 곳을 int로 해석한다.포인터의 기능• 주소를 가리킬 수 있고 주소를 받는 변수를 선언할 수 있다.• 주소 변수를 이용하여 내가 알고 있는 주소로 접근하고 값을 직접 수정할 수 있다.※ 주소 변수는 다른 것을 저장할 수 없고 주소만 저장할 수 있다.주소메모리 안에 있는 데이터의 위치를 의미하는 값이다.위치값이 필요한 이유위치가 어딘지도 모르는데 아무 데나 넣을 수는 없다.어떤 공간에 값을 넣을 때 그 위치가 어딘지를 알아야 ..
2024.03.12 -
[C++] 운영 체제(OS)
운영 체제(OS)운영체제는 실질적인, 물리적인 영향력을 행사하는 것이 아니라 컴퓨터에 깔려있는 두뇌 같은 것이다.운영체제는 소프트웨어에, pc 기기 자체는 하드웨어에 해당한다. ex) 운동선수신체 능력도 중요하지만 신체운동지능도 중요하다.아무리 신체능력이 월등해도 머리가 별로라면 신체능력을 제대로 활용하지 못할 것이다.신체운동지능은 소프트웨어, 신체 능력은 하드웨어에 해당한다.Visual Studio를 열면 솔루션을 생성하고 하위 폴더로 프로젝트들이 생성된다.프로젝트를 빌드할 때 솔루션 플랫폼이라는 것이 있는데 솔루션은 무엇이고 플랫폼이란 무엇일까?솔루션(solution)쉽게 말해서 여러 개의 프로젝트가 모인 것이다.프로젝트는 프로그램의 실체이다.솔루션을 열었을 때 프로젝트가 있고 프로젝트가 빌드되면 실..
2024.03.12