2025. 2. 21. 11:59ㆍ원티드_언리얼RPG 2기/C++
변수
변수의 속성 4가지
1) 이름
2) 값
3) 메모리크기(타입)
4) 메모리주소(&)
포인터: 메모리 주소를 값으로 가지는 변수(데이터 타입)
역참조: 포인터가 가리키고 있는 (담고있는) 메모리 주소의 값에 접근하는 것
메모리주소를 값으로 가져야 하는 이유?
1) 변수의 접근이나 제어가 불가능한 영역에서 해당 변수에 접근해서 값을 제어하고 싶을때
2) 동적할당 (new) 를 통해서 런타임때 메모리에 할당되는 변수를 제어하기 위해서
동적할당 (new 키워드, delete 키워드)
1) 개념 : 힙 메모리에 자료를 저장할 공간을 할당받는 것
힙 메모리와 스택 메모리

스택
특정 코드 구문 내에서 { ... } 임시로 할당되는 메모리 영역 (지역변수 )
힙
프로그래머가 자유롭게 할당하고 해제할 수 있는 메모리 영역
1) 데이터의 크기가 일정하지 않은 형태의 자료형
2) 서로 다른 코드 구문 {..a..} {..b..} a 변수의 값을 제어하고 싶을때 메모리 주소
포인터를 사용해서 접근할 수 있다.
(+코드영역: 지역변수의 상수를 제외한 리터럴 상수가 저장, 데이터 영역)
포인터 예제
int main()
{
int num = 3; //스택 메모리에 자료를 저장할 공간을 할당
int* pNum = #
int** ppNum = &pNum;
int* pTest = new int; //힙 메모리에 int데이터타입(4바이트)만큼 메모리를 할당받음
cout << "pTest 힙 메모리 할당 주소 " << pTest << endl;
cout << "pTest 힙 메모리 할당 주소의 값 " << *pTest;
delete pTest; //메모리 반환, delete를 잊으면 메모리 누수가 발생한다.
int * arrTest = new int[10];
delete[] arrTest;
int mapSize;
cin >> mapSize;
int arrTest1[mapSize] 정해진값이 아니라 사용불가
int * arrTest2 = new int[mapSize];
}
인라인 함수 ) 함수앞에 inline 키워드를 붙임
장점: 함수를 생성하지 않고 함수의 코드 호출한곳에 직접 집어넣음. 함수 호출 오버헤드가 사라짐.
<어서와 C++ 교재 c++ 11,14 추가된점>
auto 타입 으로 자동타입추론
초기화 int i {} ; string arr { };
범위기반 for-loop 문 : 범위안의 모든 요소에 대한 반복, 범위(배열, 컨테이너, 시퀀스)
for(auto i : list){실행문};
초기화 리스트
Time(int h, int m) : hour(h) , minute(m) { }
사용자 정의 리터럴
Distance d = 36.0_mi + 42.0_km; // 사용자 정의 리터럴
std::string str = "hello"s + "World"s; // 표준 라이브러리인 <string> 의 리터럴
complex<double> num =
(2.0 + 3.01i) * (5.0 + 4.3i); // 표준 라이브러리인 <complex> 의 리터럴
auto duration = 15ms + 42h; // 표준 라이브러리인 <chrono> 의 리터럴
/*Distance 클래스. 킬로미터와 마일에 대한 리터럴을 하나씩 정의하고
간단히 auto = 42.0km 또는 auto = 42.0mi을 작성하여 사용자가 측정 단위를 명시할 수 있다.
사용자 정의 리터럴에 대한 성능의 이점이나 단점은 없다.
주로 편의상 또는 컴파일 시간 형식 추론을 위해 사용됨. */
//사용자 정의 리터럴을 구현하려면 ""연산자와 범주에 속하는 인자를 가지고 해야함
ReturnType operator "" _a(unsigned long long int); // int 형 사용자 리터럴
ReturnType operator "" _b(long double); // double 형 사용자 리터럴
ReturnType operator "" _c(char); // char 형 사용자 리터럴
ReturnType operator "" _d(wchar_t); // char 형 사용자 리터럴
ReturnType operator "" _e(char16_t); // char 형 사용자 리터럴
ReturnType operator "" _f(char32_t); // char 형 사용자 리터럴
ReturnType operator "" _g(const char*, size_t); // 문자열(char* 또는 string) 형 사용자 리터럴
ReturnType operator "" _h(const wchar_t*, size_t); // 문자열(char* 또는 string) 형 사용자 리터럴
ReturnType operator "" _i(const char16_t*, size_t); // 문자열(char* 또는 string) 형 사용자 리터럴
ReturnType operator "" _g(const char32_t*, size_t); // 문자열(char* 또는 string) 형 사용자 리터럴
ReturnType operator "" _r(const char*); // 원시 리터럴 연산자
template<char...> ReturnType operator "" _t(); // 템플릿 리터럴 연산자
'원티드_언리얼RPG 2기 > C++' 카테고리의 다른 글
열거형,클래스 (0) | 2025.02.27 |
---|---|
구조체, 함수 (0) | 2025.02.26 |
변수, 상수, 코드표기법 (0) | 2025.02.21 |
실습: 구구단 출력 (0) | 2025.02.21 |
실습: 탈출게임 (0) | 2025.02.21 |