2026/05 25

참조자(Reference)

레퍼런스 (Reference)레퍼런스(Reference)는 변수의 또 다른 이름(별명, Alias)이다.레퍼런스는 새로운 메모리를 생성하는 것이 아니라기존 변수의 메모리를 그대로 사용한다.즉, 같은 메모리를 다른 이름으로 접근하는 방식이다.포인터와 다르게 주소를 저장하는 변수가 아니며반드시 이미 존재하는 변수와 연결되어야 한다.그렇기 때문에 선언과 동시에 초기화가 필요하며참조할 변수가 없으면 문법 오류가 발생한다.레퍼런스 선언int a = 10;int& r = a;여기서a : 원본 변수r : a의 레퍼런스(별명)잘못된 예시int& r;컴파일 오류 발생레퍼런스는 반드시 참조할 대상이 필요하기 때문이다.메모리 관점에서 보기int a = 10;int& r = a;메모리 구조주소 변수 값100..

c++/기초 2026.05.31

포인터

포인터 (Pointer)포인터(Pointer)는 메모리의 주소(Address)를 저장하는 변수이다.일반 변수는 값을 저장하지만,int a = 10;포인터는 주소를 저장한다.int* p = &a;변수는 메모리 공간이다int a = 10;이 코드를 실행하면 메모리 어딘가에 공간이 생성되고 그 공간은메모리 내 변수의 위치정보를 알리기 위한 주소를 가진다.예시:주소 변수 값1000 a 10변수 이름 : a주소 : 1000값 : 10실제 사용될 때의 주소의 형태는 다르지만 이해를 위해 주소를 1000 이라고 가정한다.컴퓨터는 주소를 사용한다사람이 적을때a = 20;컴퓨터가 하는 동작1000번지에 저장된 값을 20으로 변경즉, 컴퓨터 입장에서는 변수 이름보다 주소가 더 중요하..

c++/기초 2026.05.31

매크로

#define 매크로#define은 전처리기(Preprocessor) 지시문이다.컴파일하기 전에 코드의 특정 문자열을 다른 값으로 치환할 수 있다.#define 이름 값예시:#define MAX_HP 100int hp = MAX_HP;컴파일 전에 다음과 같이 치환된다.int hp = 100;특징컴파일 전에 단순 텍스트 치환변수가 아님타입이 존재하지 않음메모리에 저장되지 않음세미콜론(;)을 사용하지 않음#define PI 3.14매크로 함수함수처럼 사용할 수도 있다.#define SQUARE(x) ((x) * (x))사용 예시:int a = SQUARE(3);컴파일 전에 다음과 같이 치환된다.int a = ((3) * (3));결과:a = 9괄호를 사용하는 이유매크로는 단순 치환이기 때문에 괄호가 없으면 ..

c++/기초 2026.05.31

플러그 인

플러그인(Plugin)플러그인은 프로그램이나 엔진의 기능을 확장하기 위해 추가로 설치하는 모듈이다.기본 기능에는 포함되어 있지 않지만,필요한 기능을 쉽게 추가할 수 있도록 만들어진 독립적인 코드 묶음이다.플러그인을 사용하는 이유기능을 재사용할 수 있음프로젝트를 모듈화할 수 있음필요한 기능만 추가 가능유지보수가 쉬움직접 구현하는 시간 절약언리얼 엔진에서의 플러그인언리얼 엔진의 플러그인은 다음과 같은 기능을 추가하기 위해 사용된다.새로운 기능 추가에디터 기능 확장온라인 서비스 연동AI 기능 추가멀티플레이어 기능 추가예시OnlineSubsystemSteamGameplayAbilities(GAS)CommonUIEnhanced InputEOS(Epic Online Services)플러그인의 구조플러그인은 일반적으..

정적 변수

정적 변수 (Static Variable)정적 변수는 프로그램이 종료될 때까지 메모리에 유지되는 변수이다.일반 지역 변수와 달리 함수가 종료되어도 값이 사라지지 않는다.특징프로그램 시작 시 생성된다.프로그램 종료 시 제거된다.한 번만 생성된다.함수가 종료되어도 값이 유지된다.데이터 영역(Data Segment)에 저장된다.접근 범위(Scope)는 선언된 위치에 따라 결정된다.기본 문법static 자료형 변수이름;예시static int Count = 0;일반 지역 변수와 비교일반 지역 변수void Func(){ int x = 0; x++; std::cout 호출Func();Func();Func();결과111함수가 호출될 때마다 새로 생성되고 함수가 끝나면 제거된다.정적 변수void Func..

c++/기초 2026.05.29

오버로딩

오버로딩 (Overloading)오버로딩은 같은 이름의 함수를 여러 개 정의하는 것이다.단, 함수 이름은 같아도 매개변수의 형태가 달라야 한다.기본 예시void Func(int x);void Func(float x);void Func(int x, int y);위 함수들은 모두 이름이 Func로 같지만, 매개변수가 다르기 때문에 오버로딩이 가능하다.오버로딩이 가능한 기준함수의 매개변수 목록이 달라야 한다.void Func(int x);void Func(float x);void Func(int x, int y);void Func(float x, int y);가능한 차이매개변수 개수 차이매개변수 타입 차이매개변수 순서 차이매개변수 개수 차이void Func(int x);void Func(int x, int y..

c++/기초 2026.05.29

형변환

형변환 (Type Casting)형변환은 데이터의 자료형(Type)을 다른 자료형으로 변환하는 것을 의미한다.int a = 10;double b = a;위 코드에서는 int형 데이터를 double형으로 변환하여 저장한다.암시적 형변환 (Implicit Conversion)컴파일러가 자동으로 수행하는 형변환이다.예시int a = 10;double b = a;실제 동작double b = 10.0;결과b = 10.0특징컴파일러가 자동으로 수행한다.일반적으로 작은 자료형에서 큰 자료형으로 변환된다.데이터 손실이 없는 경우가 많다.예시char a = 'A';int b = a;결과b = 65문자의 아스키 코드 값이 저장된다.명시적 형변환 (Explicit Conversion)개발자가 직접 형변환을 지정하는 방식이다..

c++/기초 2026.05.29

전역변수와 지역변수

전역 변수(Global Variable)와 지역 변수(Local Variable)변수는 선언된 위치에 따라 전역 변수와 지역 변수로 나뉜다.변수의 선언 위치에 따라 사용 범위(Scope)와 수명(Lifetime)이 달라진다.전역 변수 (Global Variable)함수나 클래스 등의 코드 블록 밖에서 선언된 변수이다.프로그램 전체에서 접근할 수 있다.선언#include int a = 10;void Func(){ std::cout 특징함수 밖에서 선언한다.프로그램 시작 시 생성된다.프로그램 종료 시 제거된다.같은 파일 내에서는 어디서든 접근 가능하다.메모리의 데이터 영역(Data Segment)에 저장된다.메모리 구조int a = 10;데이터 영역(Data Segment)┌────────────┐│ ..

c++/기초 2026.05.29

함수

함수 (Function)함수는 특정 작업을 수행하는 코드의 묶음이다.같은 코드를 여러 번 작성하지 않고 재사용할 수 있으며, 프로그램을 기능별로 분리하여 관리할 수 있게 해준다.함수 선언기본 문법반환형 함수이름(매개변수){ 실행할 코드}예시int Add(int a, int b){ return a + b;}사용int result = Add(10, 20);실행 결과30함수의 구성 요소int Add(int a, int b){ return a + b;}구성 요소설명int반환형(Return Type)Add함수 이름int a, int b매개변수(Parameter)return반환 값함수 호출Add(10, 20);함수를 호출하면 함수 내부 코드가 실행된다.int result = Add(10, 20);↓..

c++/기초 2026.05.29

구조체

구조체 (Struct)구조체는 서로 다른 자료형의 변수들을 하나로 묶어 새로운 자료형을 만드는 사용자 정의 자료형(User Defined Type)이다.관련된 데이터를 하나의 단위로 관리할 수 있도록 도와준다.구조체 선언기본 문법struct 구조체이름{ 자료형 변수이름; 자료형 변수이름;};예시struct Player{ string Name; int HP; int Attack;};이제 Player는 새로운 자료형이 된다.구조체 변수 선언Player player;값 저장player.Name = "용사";player.HP = 100;player.Attack = 20;출력cout 구조체 초기화Player player ={ "용사", 100, 20};또는Player p..

c++/기초 2026.05.29