728x90

분류 전체보기 60

[C언어] 구조체와 공용체의 차이점 및 활용법

C 언어에서 구조체(struct)와 공용체(union)는 데이터를 묶어서 저장하는데 사용하는 중요한 자료형입니다. 이 두 개념은 비슷해 보이지만, 동작 원리와 메모리 사용 방식에서 큰 차이가 있습니다. 1. 구조체(struct)란?구조체는 여러 개의 데이터를 하나의 묶음으로 관리할 수 있는 사용자 정의 자료형입니다. 구조체의 각 멤버는 서로 독립된 메모리 공간을 가지며, 동시에 접근할 수 있습니다.특징각 멤버는 서로 다른 데이터 타입을 가질 수 있습니다.각 멤버는 고유한 메모리 공간을 차지합니다.총 메모리 크기는 모든 멤버의 크기의 합입니다.구조체 예제#include struct Student { int id; float grade; char name[20];};int main() { ..

C언어 2024.11.22

[C++] 클래스 템플릿(class template)

C++에서 **클래스 템플릿(class template)**은 여러 데이터 타입에 대해 동일한 클래스를 정의할 수 있게 해주는 기능입니다. 이를 통해 코드의 재사용성과 유연성을 높일 수 있으며, 다양한 데이터 타입에 대해 동일한 로직을 적용할 수 있습니다. 기본 개념클래스 템플릿은 template 키워드를 사용하여 정의되며, **타입 매개변수(type parameter)**를 사용해 클래스의 멤버 변수와 메서드의 타입을 동적으로 결정합니다.  기본 문법template class ClassName {public: T memberVariable; // 템플릿 타입을 사용하는 멤버 변수 ClassName(T value) : memberVariable(value) {} // 생성자 T getVa..

C++ 2024.11.21

[C++] decltype(타입 결정자)

C++11에서 도입된 **decltype**은 주어진 표현식의 타입을 결정하는 데 사용되는 키워드입니다. 이 기능은 특히 템플릿 프로그래밍이나 복잡한 타입 조작에서 매우 유용하며, 컴파일러가 타입을 자동으로 추론할 수 있게 해줍니다. 기본 문법decltype(expression) variable_name; expression: 타입을 추론할 수 있는 표현식.variable_name: 추론된 타입을 가진 변수의 이름.사용 예제1. 기본 사용법#include int main() { int a = 5; decltype(a) b = 10; // 'a'의 타입(int)을 사용하여 'b' 선언 std::cout   2. 표현식의 타입 결정#include int add(int x, int y) { ..

C++ 2024.11.20

[C++] 함수 템플릿(function template)

C++에서 **함수 템플릿(Function Template)**은 여러 데이터 타입에 대해 동일한 함수를 정의할 수 있는 강력한 기능입니다. 이를 통해 코드의 재사용성을 높이고, 다양한 타입에 대해 일관된 로직을 적용할 수 있습니다. 기본 개념함수 템플릿은 함수의 매개변수 타입을 일반화하여, 호출 시 전달되는 인자의 타입에 따라 적합한 함수 버전을 자동으로 생성합니다. 이를 위해 template 키워드와 타입 매개변수를 사용합니다.  기본 문법template T functionName(T arg) { // 함수 본체} T: 템플릿 매개변수(Type Parameter). 호출 시 실제 타입으로 대체됩니다.typename: 템플릿에서 타입 매개변수를 선언할 때 사용하는 키워드로, class와 동일하게 ..

C++ 2024.11.19

[C++] merge 함수

C++에서 std::merge 함수는 두 개의 정렬된 데이터를 하나로 병합하여 새로운 정렬된 범위를 생성하는 데 사용됩니다. 이는 정렬된 배열이나 컨테이너를 결합하거나 병합 정렬 알고리즘에서 핵심적으로 활용됩니다. 1. std::merge 함수란?동작 원리std::merge는 두 개의 정렬된 범위를 입력으로 받아 하나의 정렬된 범위로 병합합니다. 이때, 입력 범위가 반드시 오름차순 또는 내림차순으로 정렬되어 있어야 하며, 결과는 새로운 컨테이너나 범위에 저장됩니다.사용 프로토타입#include templateOutputIterator merge(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, In..

C++ 2024.11.18

[C언어] C언어에서 포인터의 장점과 활용 방법

C언어에서 포인터의 장점과 활용 방법C언어에서 **포인터(pointer)**는 데이터를 직접 참조하고 메모리를 효율적으로 관리할 수 있게 해주는 강력한 도구입니다. 포인터는 특히 동적 메모리 할당이나 함수 간 데이터 공유, 복잡한 데이터 구조 구현 등에서 중요한 역할을 합니다.1. 포인터의 장점1.1 메모리 직접 접근포인터를 사용하면 변수의 메모리 주소를 통해 값에 직접 접근할 수 있습니다. 이 기능은 데이터를 유연하게 처리하거나 배열, 구조체와 같은 복잡한 데이터 구조를 다룰 때 매우 유용합니다.1.2 메모리 효율성포인터를 사용하면 데이터 복사를 줄이고 메모리를 효율적으로 사용할 수 있습니다. 함수에 대용량 데이터를 전달할 때 값을 복사하지 않고 포인터로 전달하면 성능이 향상됩니다.1.3 동적 메모리 ..

C언어 2024.11.17

[C언어] Call by Value와 Call by Reference

C언어에서 함수 호출 시 **Call by Value(값에 의한 호출)**와 Call by Reference(참조에 의한 호출) 방식은 중요한 개념입니다. 1. Call by Value (값에 의한 호출)정의Call by Value는 값을 함수에 전달하는 방식입니다. 이때 함수는 전달받은 변수의 복사본을 사용하므로, 함수 내부에서 매개변수를 변경하더라도 원본 변수는 영향을 받지 않습니다.특징함수는 전달받은 값의 복사본을 사용합니다.원본 데이터를 보호할 수 있습니다.값의 복사본이 생성되므로 메모리 사용량이 늘어날 수 있습니다.코드 예제#include void addTen(int number) { number += 10; // 복사된 값이므로 원본 변수와 별개 printf("함수 내에서의 값: %..

C언어 2024.11.16

[C++] 템플릿 매개변수(template parameter)

C++에서 템플릿 매개변수는 함수나 클래스 템플릿 정의에서 사용하는 매개변수입니다. 이를 통해 데이터 타입이나 값 등을 일반화하여 다양한 타입에 대해 재사용 가능한 코드를 작성할 수 있습니다.기본 개념함수 템플릿:함수 템플릿을 사용하면 여러 데이터 타입에 대해 동일한 함수를 정의할 수 있습니다. 아래 예제에서는 두 값을 비교하는 함수를 정의합니다.#include template T max(T a, T b) { return (a > b) ? a : b;}int main() { std::cout  클래스 템플릿:클래스 템플릿을 사용하면 데이터 타입을 일반화하여 다양한 타입의 객체를 생성할 수 있습니다.#include #include template class Box {private: T it..

C++ 2024.11.14

[C++] 숨겨진 친구(hidden friend)

"Hidden friend" 함수는 C++에서 친구(friend) 함수가 이름의 가시성 문제로 인해 호출되지 않는 현상을 설명하는 개념입니다. 이는 C++의 이름 가시성(scope) 규칙에서 비롯된 문제이며, 특정 규칙이나 표준이 아닌, 프로그래밍 중에 발생할 수 있는 문제 유형 중 하나입니다.Hidden Friend의 개념친구 함수:클래스 내부에서 friend 키워드를 사용해 선언된 함수로, 해당 클래스의 private 및 protected 멤버에 접근할 수 있습니다.이름 가시성의 문제:친구 함수와 동일한 이름을 가진 다른 함수가 다른 범위(예: 다른 클래스나 네임스페이스 등)에서 정의되면, 호출 시 이 함수가 우선시 될 수 있습니다. 이로 인해 원래 의도했던 친구 함수가 호출되지 않거나 접근할 수 없..

C++ 2024.11.13

[C++] 친구(friends) 함수

C++에서 친구(friend) 함수는 특정 클래스의 private 또는 protected 멤버에 접근할 수 있는 특별한 외부 함수입니다. 친구 함수는 클래스의 멤버 함수는 아니지만, 클래스 내부의 friend 선언을 통해 클래스의 비공개 멤버에 접근할 권한을 얻습니다.기본 개념친구 함수 선언:클래스 내부에서 friend 키워드를 사용해 친구 함수를 선언합니다. 이렇게 선언된 함수는 클래스의 비공개 멤버에 접근할 수 있습니다.친구 함수 정의:친구 함수는 클래스 외부에서 정의되며, 해당 클래스의 멤버 함수가 아닙니다. 단순히 함수처럼 호출됩니다.예제다음 예제에서는 친구 함수가 클래스의 비공개 멤버에 접근하는 방법을 보여줍니다.#include class MyClass {private: int value;..

C++ 2024.11.12
728x90