본문 바로가기

C++19

12. 문자 C++ 메모리 영역 개요스택(Stack)함수 호출 시 생성되는 지역 변수, 매개변수 등이 저장되는 영역데이터 영역(Data Segment)초기화된 전역 변수와 정적 변수 등이 위치힙(Heap)new/delete 또는 malloc/free로 동적 할당한 메모리가 위치코드 영역(ROM)실행할 기계어 코드가 저장된 읽기 전용 메모리(Read Only Memory)C++ 문자 관련 기본형 자료형크기설명char1 byte정수 타입. 저장된 값에 대응하는 문자로 출력bool1 byte0 또는 1. 0이 아니면 모두 참(true)wchar_t2 byte와이드 문자. 유니코드 문자 저장 가능short2 byte부호 있는 16비트 정수char c = 0;저장된 값 0에 대응하는 제어 문자(NULL)를 의미char c =.. 2025. 4. 28.
11. void 포인터 (void*) void란?void는 반환값이 없는 함수의 반환 타입을 나타낼 때 사용된다.void*란?void*는 자료형이 지정되지 않은 포인터를 의미한다.어떤 변수의 주소든 저장할 수 있지만, 역참조가 불가능하다.또한, 포인터 연산(예: +1)도 할 수 없다, 왜냐하면 해당 포인터가 가리키는 데이터의 크기를 알 수 없기 때문이다.void* pVoid = nullptr;int a = 0;float f = 0.f;double d = 0.;long long ll = 0;pVoid = &a;pVoid = &f;pVoid = &d;pVoid = ≪// *pVoid; // ❌ 역참조 불가// pVoid + 1; // ❌ 포인터 연산 불가일반 포인터와 비교일반적인 포인터는 자료형* 형태로 선언되며, 역참조 .. 2025. 4. 19.
10. 포인터와 const 포인터와 const✅ const 키워드 — 상수(불변값) 선언const int cInt = 100; // cInt는 100으로 고정된 상수const는 상수를 선언할 때 사용합니다.일반적으로 상수는 r-value, 변수는 l-value라고 부릅니다.int a = 10; // a는 l-value, 10은 r-value✅ const 강제 변경 (비추천)문법적으로는 const 변수의 값을 막고 있지만, 포인터 연산으로 강제로 변경할 수 있습니다.const int cInt = 100;int* pInt = (int*)&cInt;*pInt = 300;printf("cInt 출력 : %d\n", cInt); // 출력: 100 (변경 실패한 것처럼 보임)왜 100이 출력될까요?👉 레지스터 최적화 때문에 컴파일러가 c.. 2025. 4. 19.
9. 포인터 변수 문제 풀이 강의 링크🧩 문제 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);🖨️ 출력 결과1번 문제 정답 : 5🔍 해설short sArr[10]은 2바이트 정수 10개로 구성된 배열입니다.int* pI = (int*)sArr;→ short*을 int*로 강제로 캐스팅하였기에, 포인터의 연산 단위가 4바이트로 바뀝니다.pI + 2는 4바이트 * 2 → 8바이트(=4개의 short) 만큼 증가합니다.즉, sArr[4]와 sArr[5]를 가리키게 됩니다. 즉 {1,2,3,4,👉5,6,7,8,9,10} 중에서 5,6 위치.이후 (sh.. 2025. 4. 15.
8. 포인터 8. 포인터포인터란?포인터(pointer)는 메모리 주소를 저장하는 변수입니다. 즉, 특정 변수의 메모리 주소를 가리키며, 이를 통해 해당 변수의 값을 간접적으로 접근하고 수정할 수 있습니다.기본 개념// 포인터 변수 선언 및 초기화int* pint = nullptr; // nullptr은 0x00000000을 의미하며, 포인터가 아무것도 가리키지 않음을 나타냄int i = 100;// & : 변수의 주소값을 가져오는 연산자int* pint2 = &i; // i의 주소를 pint2에 저장// 주소를 이용한 값 변경(*pint2) = 200; // pint2가 가리키는 변수 i의 값을 200으로 변경// 다른 데이터 타입의 포인터float f = 3.14f;float* pf = &f; // f의 주소를 p.. 2025. 4. 15.
c++ int를 문자배열로 만들기 ────────────────────────────목차int와 문자, 문자열 간 변환 1-1. int ↔ char 간 변환 1-2. int ↔ string 간 변환 1-3. C 스타일 문자열 변환static_cast vs reinterpret_castC++ string 관련 함수 정리string → 문자 배열 (char[]) 변환주의 사항 및 요약 비교직접 char 배열로 변환하는 방법────────────────────────────1. int와 문자, 문자열 간 변환1-1. int ↔ char 간 변환① int → char 변환정수형 값을 문자로 변환하는 방법은 정수 값에 문자 '0'(또는 아스키 코드 48)을 더하는 방식입니다.예시 코드:int before = 3;char after = before.. 2025. 4. 11.