1-1. 프로그래밍 기초
Visual Studio = IDE(통합 개발 환경)
Resource Files
- 외부지원이 필요할 때 사용
Header Files
- 클래스 정의할때
- 라이브러리 - 가져다가 쓰면됨
- 사용자정의 - 해더파일에 추가해서 사용
iostream → input output stream → 입출력 스트림
#include <iostream>
< > → C++에서 제공하는 헤더파일
#include " "
" " → 내가 구현한 헤더파일
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
cout → Console out
<<, >>는 원래 비트 이동 연산자
cout, cin에서만 입출력 의미로 바뀜
<< → 출력 cout
>> → 입력 cin
endl; → 한줄 띄어쓰기
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World" << endl;
return 0;
}
변수 문법
C++ → 사용 편의성을 위해 메모리에 이름을 붙여서 관리할 수 있게 제공
cin → 변수로 할당한 공간에 입력을 받을 때
cout → 변수에 저장된 값을 콘솔에 출력할 때
변경 할 수 없게 값 설정
const 사용 (read only)
작업의 구성요소
- 인자: 작업에 사용되는 외부 값
- 동작: 어떤 작업을 수행할지 정의
- 반환: 작업을 수행한 후 최종적으로 외부에 전달할 값을 의미
1-2. 포인터와 레퍼런스
포인터
변수의 주소값을 담을 수 있음
담고 있는 주소값에 해당되는 메모리에 있는 값을 읽거나 수정 가능
배열
배열 이름은 주소값을 담고 있음 / 기존 포인터과 마찬가지로 * 연산자를 활용해서 해당 주소에 있는 값을 확인 가능
buf 주소 값
22 → → 22 X
23 A
24 B
25 C
buf[0] = X
*buf = X
*(buf + 0) = X
buf[k] = *(buf + k)
알아두면 좋음.
구현을 하다보면 라이브러리에서 구현된 코드, 타인이 구현한 코드를 분석할 때 저런 패턴이 많음.
배열과 포인터의 차이
l-value = r-value
왼쪽에 오는 원소: l-value
오른쪽에 오는 원소: r-value
주소값 연산을 할 때
r-value 에 배열이름이 들어가면 첫 번째 주소값을 l-value 로 반환 / 하지만 주소값은 변경할 수 없음.
포인터 배열
* → Askerisk
포인터를 원소로 갖는 배열
int* ptrArr[4] 크기가 4인 배열
각 원소가 포인터인 배열

배열 포인터
배열 전체를 가리키는 포인터
Ex)
int [4]
// 정수형 크기가 4인 정수 배열 타입을 가리키는 포인터
ptr + 1 실행 → ptr 이 가리키는 주소에서 한 단위 메모리 주소가 이동

(*ptr) + 1 실행
ptr 이 가리키는 변수의 값을 1 증가시킴.
ptr 이 22번지를 기리키고, 그 주소에 7이라는 값이 있으면
(*ptr) + 1 은 8
*ptr → 가르킨 주소를 역참조 → 22번지의 주소의 값을 먼저 가져옴 → 7

레퍼런스
선언과 동시에 초기화를 해야됨 → 선언과 동시에 어떤 변수를 참조해야됨
일반 변수는
int x;
x = 3
이렇게 해도 가능함
- 일반 변수와 거의 동일하게 사용 가능
- 내부적으로는 해당 변수를 직접 가리켜 주는 역할을 함
- 특정 변수에 대한 별명을 부여함
- 복잡한 문법 없이도 참조하고 있는 변수의 값을 제어할 수 있음
선언 방법
데이터형 뒤에 & 붙임
Ex)
int x = 3;
int y = x;
y = 4; → x = 3
int x = 3;
int& y = x;
y = 4 → x = 4
y는 x의 별명이기 때문에 같은 공간을 바라봄 → 동일한 영역의 값으로 변경
포인터와 레퍼런스의 차이점
1. 선언과 초기화 시점이 다름
포인터는 선언 후 나중에 * 연산자를 통해 가리킬 대상을 변경할 수 있음
레퍼런스는 선언과 동시에 초기화를 해야됨. 초기화 이후에는 다른 대상에 재연결 X
2. NULL은 존재
포인터: 유효한 대상이 없을 나타내기 위해 NULL 혹은 nullptr 사용 가능 (nullptr 사용하는 습관을 들이면 좋다고 함)
레퍼런스: 항상 다른 변수와 연결되어 있음 / NULL은 존재 X
3. 간접 참조 문법의 유무
포인터: 주소값을 담으므로 접근할 때 * 연산 사용 / 주소를 가져올 때 & 연산 사용
레퍼런스: 변수 자체의 별명이므로 일반 변수와 연산하는 방법이 동일
상수 레퍼런스
상수 제약을 걸어서 읽기 전용으로 사용 가능
Ex)
const int& cref = x;
복사 과정 없이 x의 값을 읽을 수는 있지만 x값을 수정할 수는 없음
'게임 개발자를 위한 C++ 문법' 카테고리의 다른 글
| 게임 개발자를 위한 C++ 문법 / 3-1 ~ 3-2 (0) | 2026.05.18 |
|---|---|
| 게임 개발자를 위한 C++ 문법 / 2-4 (0) | 2026.05.15 |
| 게임 개발자를 위한 C++ 문법 / 2-3 (0) | 2026.05.13 |
| 게임 개발자를 위한 C++ 문법 / 2-1 ~ 2-2 (0) | 2026.05.06 |
| 게임 개발자를 위한 C++ 문법 / 1-5 ~ 1-6 (0) | 2026.05.04 |