본문 바로가기

프로그래밍/c++28

c++ 25. 포인터?? 포인터의 개념과 예제 코드 처음 c언어를 배우시는 분들에겐 무덤과도 같은 포인터입니다. 많은 분들이 포인터 때문에 포기하는 경우들이 많아서 인데요. 사실 개념과 기본적인 사용 방법은 어렵지 않지만 이해하는데 많은 분들이 어려움을 겪는 녀석입니다. C++에서 포인터는 변수의 메모리 주소를 저장하는 변수입니다. 포인터를 사용하면 메모리의 특정 위치에 직접 접근할 수 있으며, 이를 통해 데이터를 효율적으로 처리하고 관리할 수 있습니다. 포인터는 C++의 중요한 기능 중 하나로, 다양한 고급 기능과 밀접한 관련이 있습니다. 포인터의 개념 포인터는 기본적으로 데이터가 저장된 메모리의 주소를 가리키는 변수입니다. 포인터를 사용하면 변수에 직접 접근하는 대신 변수의 주소를 통해 간접적으로 데이터에 접근할 수 있습니다. 이러한 특성 덕분에 포인.. 2024. 4. 18.
c++ 24. 구조체 struct C++에서 구조체(structure)는 여러 데이터 항목을 하나의 단위로 묶는데 사용됩니다. 이러한 구조체는 관련 데이터를 그룹화하여 더 효율적인 프로그램 관리를 가능하게 합니다. 구조체는 일반적으로 사용자 정의 데이터 타입으로서, 다양한 데이터 타입의 변수들을 포함할 수 있습니다. 구조체를 사용함으로써의 이점은 아래와 같습니다. 데이터 그룹화: 구조체는 관련된 데이터 항목들을 하나의 단위로 묶어주어, 데이터 관리를 쉽고 효율적으로 만듭니다. 예를 들어, 학생에 관한 정보(이름, 학번, 점수 등)를 구조체로 묶으면 각 학생의 정보를 개별적으로 관리하기보다 더 체계적으로 다룰 수 있습니다. 타입 안전성: 구조체를 사용하면 사용자 정의 데이터 타입을 생성할 수 있으며, 이로 인해 타입 체크가 가능해져 프로그.. 2024. 4. 16.
c++ 23. Array 컨테이너 c++의 컨테이너 중 배열 컨테이너를 배열 대신 사용할 수 있습니다. C++11부터 사용할 수 있으며, 배열의 크기를 타입의 일부로 만들어 컴파일 시간에 크기가 결정됩니다. 먼저, std::array를 사용하기 위해 헤더를 포함해야 합니다. 사용 방법은 아주 쉽습니다. array 배열명으로 아래 예제처럼 바로 초기화도 가능합니다. 배열의 크기는 선언 시 를 통해 지정되며, 이는 arr이 int 타입의 요소 5개를 가지고 있음을 나타냅니다. 이 array 컨테이너의 장점은 아무래도 바로 배열의 크기를 알 수 있다는 것입니다. 따로 배열의 크기를 알기위한 작업이 필요가 없이 size()를 활용하시면 됩니다. array의 장점 타입 안전성: std::array는 배열의 크기를 타입의 일부로 포함하여, 컴파일 .. 2024. 4. 3.
c++ 22. 다차원 배열 다차원 배열은 기존의 1차원의 배열 즉 가로 또는 세로(보통은 가로로 표현)로 한 줄로만 구성된 배열이 아닌 가로와 세로를 포함한 그 이상의 배열로 구성된 것을 말합니다. 그림에서 보듯 1차원은 일반 주택을 나열한 것에 비유할 수 있고, 2차원 배열은 아파트에 비유할 수도 있겠네요. 더불어 2차원 이상의 배열도 쓰이긴 하지만 3차원 이상은 잘 쓰이지 않습니다. 가독성이나 구조적으로도 굉장히 복잡해지니깐요. 아래의 그림은 4,6의 크기를 가진 2차원 배열입니다. 4행 6열의 2차원 배열이죠. 각 요소에 접근하기 위한 방법은 1차원 배열과 비슷합니다. 다만 두 개의 인덱스가 필요합니다. 만약 1행 2열에 있는 요소(값)을 가져오고 싶다면 배열명[1,2]로 접근하면 됩니다. 먼저 선언 방법을 보도록 합시다. .. 2024. 3. 28.
c++ 21. 1차원 배열의 크기 찾는 법 배열의 크기는 배열을 선언 시에 작성하게 되는데 이 크기를 알고 있다면 문제가 없지만 이 배열의 크기를 모른다면 배열의 인덱스를 벗어나는 문제가 빈번히 발생할 수 있습니다. 특히 함수로 배열을 전달할 때는 배열의 크기 정보가 전달되지 않으므로, 배열의 크기를 따로 매개변수로 전달하거나 다른 방법을 사용해야 합니다. 배열의 현재 크기를 몰라도 크기를 알 수 있는 방법에 대해 알아보도록 하겠습니다. sizeof(arr)은 배열 arr의 전체 크기를 바이트 단위로 반환합니다. sizeof(arr[0])은 배열의 한 요소의 크기를 바이트 단위로 반환합니다. 따라서 sizeof(arr) / sizeof(arr[0])는 배열의 전체 요소 수, 즉 배열의 크기를 나타냅니다. 위 방법의 경우 지역 내에서 배열의 정보를.. 2024. 3. 28.
c++ 20. 배열 Array 배열 Array에 대해서 알아보겠습니다. 배열은 데이터의 집합체라고 할 수 있습니다. 변수는 하나의 데이터(값)만을 담을 수 있지만 배열은 여러 개의 데이터를 담을 수 있습니다. 다만 여러가지의 데이터 타입을 담는 것은 아니고 하나의 데이터 타입만 담을 수 있습니다. 아래의 그림을 통해 알아보겠습니다. 그림에서 보다시피 여러 종류가 아닌 하나의 종류만 담을 수 있도록 상자에 주기를 한 것 처럼 하나의 데이터 타입만을 담을 수 있습니다. 그리고 상자의 크기만큼 사과를 담을 수 있듯 배열의 크기만큼 데이터를 담을 수 있습니다. 물론 위 그림에서처럼 사과의 색이나 사이즈 등이 다른 것처럼 데이터 타입은 같지만 그 값은 다를 수 있습니다. 위 배열은 int 정수형 타입을 담을 수 있는 6크기의 int 배열입니다.. 2024. 3. 13.
c++ 19. 함수 오버로딩 기본적으로 함수는 같은 이름으로 선언할 수 없습니다. 하지만 같은 기능을 하는 함수인데 연산과정이 다르다고 해서 다른 이름으로 쓰는 건 혼동을 줄 수 있기에 이럴 때 함수 오버로딩을 활용할 수 있습니다. 함수 오버로딩은 같은 이름을 가진 여러 함수를 정의할 수 있게 하는 기능입니다. 이러한 함수들은 매개변수의 타입, 개수 또는 순서가 서로 다르기 때문에 구별됩니다. 함수 오버로딩은 같은 작업을 다양한 타입의 인자나 다른 개수의 인자로 수행할 수 있게 하여, 코드의 가독성과 재사용성을 향상시킵니다. 함수 오버로딩의 규칙 다른 매개변수 목록: 오버로딩된 각 함수는 매개변수의 타입, 개수 또는 순서가 달라야 합니다. 반환 타입은 구분 요소가 아님: 오버로딩된 함수들은 반환 타입이 다를 수 있지만, 오로지 매개.. 2024. 2. 23.
c++ 18. 함수 function 함수는 특정 작업을 수행하는 코드들을 묶어놓은 코드 블록입니다. 함수는 코드의 재사용성을 높이고, 구조를 개선하여 가독성과 유지 보수성을 향상시킬 수 있습니다. 아래는 함수의 기본 구조입니다. 반환타입: 함수가 실행 완료된 후 호출한 곳으로 반환하는 값의 데이터 타입입니다. 반환할 값이 없는 경우 void를 사용합니다. 함수이름: 함수를 식별하는 데 사용되는 고유한 이름입니다. 매개변수 목록: 함수가 작업을 수행하는 데 필요한 입력 값을 정의하는 부분입니다. 매개변수가 필요 없는 경우 비워둘 수 있습니다. 함수 본문: 함수가 호출될 때 실행되는 코드 블록입니다. 반환문: 함수가 결과값을 호출한 곳으로 반환하는 명령입니다. return 키워드를 사용합니다. void 타입일 경우 생략 가능. 우선 반환할 값.. 2024. 2. 22.
c++ 17. 중첩 반복문 조건문의 중첩처럼 반복문 역시 중첩이 가능합니다. 반복문 내에 또다른 반복문을 둠으로써 2차원 배열의 요소를 처리하거나, 복잡한 패턴의 출력, 특정 조건에 따른 반복 계산 등에 활용할 수 있습니다. 기본적인 구조는 아래와 같습니다. 위 예제에서 보듯 외부 반복문과 내부 반복문 모두 세번씩 반복되는 걸 확인할 수 있습니다. 내부 반복문은 외부 반복문에 포함되어 있기에 외부 반복문 실행 시 내부 반복문이 매번 재실행되어 세번씩 반복됩니다. 결과적으로 내부 반복문은 외부 반복문의 횟수에 내부 반복문을 곱한 횟수만큼 반복이 됩니다. 위의 예제에선 각각 3회씩 반복되도록 했기에 내부 반복문은 총 9회 반복이 됩니다. 중첩 반복문의 경우 아래와 같이 활용될 수 있습니다. 구구단 출력 1 2 3 4 5 6 7 8 9.. 2024. 2. 19.
c++ 16. 조건문 중첩 C++에서 조건문의 중첩(Nested Conditional Statements)은 한 조건문 내부에 다른 조건문을 포함시키는 것을 말합니다. 이러한 구조는 프로그램의 로직이 복잡할 때나 여러 조건을 검사해야 할 때 유용하게 사용됩니다. 가장 일반적인 형태는 if 문 내부에 다른 if 문을 넣는 것이지만, switch 문 내부에 if 문을 넣는 경우도 있습니다. 기본적인 구조는 아래와 같습니다. 조건문 안에 또 다른 조건들을 추가할 수 있습니다. 물론 아래와 같이 할 수도 있지만.... 중첩에 중첩에 중첩...을 할 수도 있지만 가독성을 고려해서 작성을 하셔야 합니다. 간단한 예 중첩 조건문을 사용할 때는 코드의 가독성을 유지하는 것이 중요합니다. 너무 많은 수준의 중첩은 코드를 이해하고 유지보수하기 어렵.. 2024. 2. 2.
c++ 15. while 반복문 while 반복문은 C++에서 조건이 참(true)인 동안 계속해서 코드 블록을 반복 실행하는 제어 구조입니다. while 문의 기본 구조는 다음과 같습니다. 조건이 거짓(false)이 되면, 루프는 종료됩니다. 위 이미지는 기본 구조이며 아래의 예제들처럼 활용됩니다. 위 이미지는 흡사 for문과 비슷합니다. 위 예제처럼 활용도 가능하지만 while문은 보통 반복횟수가 지정되어 있지 않은 반복에 자주 활용됩니다. 위 예제에서 보듯 조건이 아예 true라고 명시되어있는 것을 볼 수 있습니다. 특정 조건에 따라 while문을 끝내주지 않는다면 무한 반복을 하게되어 프로그램이 멈추는 것을 보실 수 있습니다. 이런 무한 루프에 빠지지 않도록 주의해서 while문을 사용해야 합니다. while 문의 활용 whil.. 2024. 1. 30.
c++ 14. for 반복문 C++에서 for 반복문은 특정 코드 블록을 지정된 횟수만큼 반복하도록 하는 구조입니다. 이 반복문은 다음과 같은 구성 요소로 이루어집니다. 초기화 문장: 반복문이 시작될 때 단 한 번만 실행됩니다. 보통 반복문에서 사용될 변수를 초기화하는 데 사용됩니다. 조건 문장: 이 조건이 참(true)인 동안 반복문은 계속 실행됩니다. 조건이 거짓(false)이면 반복문은 종료됩니다. 증감 문장: 각 반복의 끝에서 실행됩니다. 보통 반복 변수의 값을 증가시키거나 감소시키는 데 사용됩니다. 반복될 코드 블록: 조건이 참인 동안 계속 실행될 코드입니다. 아래 간단한 예제를 통해 쓰임을 알아보겠습니다. 위 예제는 int형 i 변수를 0으로 초기화하고, 변수 i의 값이 5보다 작다면 반복을 하는 반복문 입니다. 증감식 .. 2024. 1. 26.
반응형