2019년 3월 21일 목요일

국비 교육 : 게임 프로그래밍 016일

16차 교육 내용 메모를 정리해 본다.

C++에서 가장 난해한 개념이라 생각하는 포인터에 대해서 강의가 되었나 보다.


포인터
- 주소값을 저장, 변경할 수 있는 메모리 공간
- 값을 저장, 변경할 수 있는 메모리의 공간 = 변수
= 포인터 변수로 부를 수 있다.

메모리 주소를 저장할 수 있는 공간이며, 변수에 주소 위치가 저장된다.

주소 : 메모리상 변수 위치
주소값 : 포인터 변수에 저장된 값

포인터 관련 연산자
& : 변수가 위치한 주소
* : 해당 주소값에 위치한 변수

*(&value)는 value를 의미한다.
- &value : value의 주소
- *(value의 주소) : 주소에 위치한 변수 = value

포인터의 선언
- int *p;    p주소값에 위치한 변수는 int 형
- int *p1, p2;  p1은 int 포인터, p2는 int 형
- int **p;    p에 들어가 있는 변수가 포인터형


다른 함수에서 멤버 변수를 수정할 수 있도록 해줌
- 함수에서 외부 변수를 변경하는데 사용

포인터 선언 -> 주소를 변수에 넘김 -> *를 붙여 주소의 '변수'를 호출해 제어

nullptr = null 포인터
- 주소값이 없다고 표현한다.
- int *p = nullptr; 로 선언한다.

예)
int *p = nullptr;
cout << p + 0 << endl;    → 0000 0000
cout << p + 1 << endl;    → 0000 0004
cout << p + 2 << endl;    → 0000 0008
과 같이 자료형만큼 증가한다.


배열명은 배열을 시작하는 주소다
즉, 배열명[인덱스] = *(배열명 + 인덱스)로 치환된다.


1. 자료형과 const는 선언 위치와 관계가 없다.
- int const a = 3;
- const int a = 3;         → 두 선언은 동일하다.

2. *과 const의 선언 위치의 관계성
- const  * p     → p 주소에 위치한 변수를 상수로 여긴다. (*p 상수 , p 변수)
-    * const p  → *p는 변수, p는 상수
- const  * const p  → *p는 상수, p는 상수

3. 자료형과 const 선언 위치의 관계성
- int const *p = &value;
- const int *p = &value;   → 두 선언은 동일 하다.


문자열(string) = 문자 집합 = 문자 배열

문자열 입출력
- 문자 배열의 주소를 출력하면, 문자를 연속해서 출력한다.
- cout << name << endl;
- cout << name[0] << name[1] << name[2] << endl;  → 두 선언은 동일 하다.
- 주소 출력이 아닌 값이 출력되는 문자 배열만 특별히 처리해 준다. 

문자열 길이 + 1 = 문자열 크기 = 배열 선언 값


강의가 포인터로 시작해서, 문자열의 활용에 대한 내용까지 진행이 됐다.
다른 날에 비해 복잡한 내용이 하루 만에 처리된 느낌이 든다.

댓글 없음:

댓글 쓰기

Unity - Firebase 연동 (Analytics, AdMob)

버전 : firebase_unity_sdk_6.5.0.zip 게임에서 통계 측정 및 광고 추적을 위해 Firebase 을 연동한다. 앞서 [Unity - GPGS 와 Admob 연동 및 배포 준비 작업]  연동 이후에 작업을 진행 한다. 유니...