Coding/C++ 8

[C++] Pointer 포인터

포인터의 기본 개념포인터는 변수를 가리키는 변수이며, 메모리 주소를 저장하고 있는 변수이다.int num = 147;int* pointer = #cout 역참조를 통해 포인터가 가리키는 변수의 값을 변경할 수 있다.*pointer = 100;cout 여러 포인터 변수와 주소 확인같은 주소를 가리키는 여러 포인터를 선언할 수 있다.int num = 123;int* pNum0 = #int* pNum1 = #int* pNum2 = pNum0;cout 포인터 선언 시 해석포인터 선언은 "해당 주소값을 어떤 타입으로 해석할 것인가"를 의미한다.int num = 1;int* pNum = # // int형 데이터를 가리키는 포인터const 키워드와 포인터const의 위치에 따라 의미가 달..

Coding/C++ 2025.05.31

[C++] Array range-based for

기본 for 루프를 통한 배열 순회일반적인 배열을 순회할 때는 전통적인 for 루프를 사용한다.int arr[5] = {1, 2, 3, 4, 5};for (int i = 0; i 범위 기반 for 루프 (range-based for)C++11부터 지원되는 범위 기반 for 루프를 사용하면 코드가 간결해진다.for (int num : arr){ cout 구조체 배열 초기화 및 순회구조체 배열은 일반 배열처럼 초기화할 수 있다.struct Person{ float weight; float height;};Person persons[] = { Person{70.f, 181.f}, Person{56.2f, 167.3f}};주소 비교를 통한 구조체 순회 방식 차이일반적인 인덱스 기반 순..

Coding/C++ 2025.05.31

[C++] Array

array 선언과 초기화std::array는 고정된 크기의 배열을 선언할 때 사용되며, 크기는 템플릿 인자로 고정된다.#include array arr{1, 2, 3};명시적으로 값을 지정하지 않은 요소들은 0으로 초기화되지 않고 쓰레기값이 들어갈 수 있다.요소 접근과 경계 검사일반적인 배열처럼 인덱스를 통해 요소에 접근할 수 있으며, at()을 이용하면 범위 검사까지 수행된다.cout at()은 배열의 경계를 벗어나는 접근을 할 경우 런타임 에러를 발생시켜 디버깅에 도움이 된다.배열의 크기 확인std::array는 size() 멤버 함수를 통해 배열의 크기를 반환한다.cout 기존 배열은 sizeof 연산으로 크기를 계산해야 한다.int arr0[5] = {1, 2, 3};cout 앞/뒤 요소 접근fr..

Coding/C++ 2025.05.29

[C++] enum class & enum struct

enum을 자주쓰다보면은 문제가 발생하는데 바로 다른 변수이름하에 같은 이름이 할당되었을때, 즉 중복정의시 문제가 생긴다. 예시 코드를 보자enum CircleAttribute{ Bold = 1};enum RectAttribute{ Bold = 1, Underline = 2};기존 enum은 범위가 없기 때문에 같은 이름을 다른 enum에 중복 정의하면 컴파일 에러가 발생한다. enum CircleAttribute{ cBold = 1};충돌 방지를 위해 접두사(prefix)를 사용하여 관리하는 경우가 많다. 하지만 변수 이름이 너무 다양해지고 관리하기가 힘들기 때문에애초에 enum 뒤에 class 혹은 struct을 넣어서 직접 지정하는 형태를 쓰는 형태로 쓰면된다. 범위가 있는 열..

Coding/C++ 2025.05.28

[C++] enum

enum을 이용한 색상 상수 정의enum을 사용하면 각 항목에 정수 값을 명시적으로 지정할 수 있다. 명시하지 않으면 0부터 자동으로 증가한다.위 예시에서 Red는 0, Green은 1, Blue는 2, Alpha는 3, SIZE는 4가 된다.#include using namespace std;enum Color{ Red = 0, Green, Blue, Alpha, SIZE};배열을 이용한 색상 데이터 저장int colors[SIZE] = { 255, 128, 128 };cout enum 값을 배열의 인덱스로 사용하면 가독성도 좋고 유지보수도 편리하다. SIZE는 배열의 크기로도 사용될 수 있다. 배열을 이용한 평균 계산기본적으로 평균을 계산할땐 밑에 있는 코드처럼 그냥 더해서..

Coding/C++ 2025.05.27

[C++] Union 유니온

Struct이랑 Union이랑 비슷한 개념이면서도 다른게 Union의 경우 배열의 크기를 상대적으로 Struct보다 작게 사용할 수 있다.#include using namespace std;int main(){ struct Product0 { int idType; // 4 bytes int idInteger; // 4 bytes int idChars[10]; // 10 x 4 = 40 bytes (int 배열) }; cout 구조체 Product0은 고정된 형식으로 데이터를 저장합니다. int 타입 기준으로 정렬이 되며, 배열 크기만큼의 메모리를 항상 차지한다. union을 활용한 메모리 절약union은 여러 타입을 ..

Coding/C++ 2025.05.26

[C++] Struct alignas

C++에서 struct는 멤버 변수들의 메모리 배치를 최적화하기 위해 패딩(padding)을 추가할 수 있다. 기본 구조체의 메모리 크기 확인기준은 구조체에서 가장 자료형이 큰것을 선정한다.여기서는 float인데 char의 경우 사실상 1 byte이기 때문에 float 4byte를 선정한다.int main(){ struct Person { float height; // 4 bytes float weight; // 4 bytes char name[10]; // 10 bytes short grade; // 2 bytes }; std::cout // height, grade, weight, name 순..

Coding/C++ 2025.05.24

[C++] Struct 구조체

C++에서 구조체(struct)는 여러 데이터들을 하나로 묶어 관리할 수 있다. 구조체 예시를 들땐 보통 신체검사할때 쓰는 요소들을 예시로 많이 든다. struct 묶어서 쓰고싶을땐 맨위에 먼저 안에 들어가는 struct을 먼저 선언해야한다.밑에 있는 코드의 경우 눈시력관련 변수를 먼저 선언후 struct을 제작한 예시struct EyeSight{ float left; float right;};struct Person{ float height; float weight; char name[10]; EyeSight eyeSight;}; 구조체 초기화 선언 - 전체 순서대로 초기화 Person person0 = {174.2f, 60.1f, "David", {1.1f, 1.0..

Coding/C++ 2025.05.23
반응형