비타Cpp

포인터의 연산과 배열(array)(1) 본문

C,C++

포인터의 연산과 배열(array)(1)

멍C 2020. 6. 3. 11:35

포인터는 메모리 상의 주소 값을 나타낸다. 이러한 포인터도 연산자를 통해 연산이 가능한데,

 

주소 값에 +,- 같은 주소 값의 덧셈 뺄셈이 가능하다.

 

int* pNum1;
int* pNum2;

pNum1 = new int(100);
pNum2 = pNum1 + 1;
*pNum2 = 200;

std::cout << pNum1 << " , " << pNum2 << std::endl;
std::cout << *pNum1 << " , " << *pNum2 << std::endl;

출력창

pNum1에 new int()를 이용하여 int형의 메모리를 잡아주고 안에 100이라는 값을 넣어준 다음,

pNum2에는 별도의 new 없이, pNum1의 포인터에 + 1을 해주어 메모리를 잡아준 다음 안에 200이라는 정수 값을 넣어줬다.

출력 창을 보면 pNum1의 주소 : 00819CE0 에서 + 1 이 아닌 + 4 가된 00819CE4가 잡힌 것을 볼 수가 있다.

 

포인터의 +,- 1이 그대로 연산되는게 아니라 해당 포인터의 할당 사이즈만큼이 곱해져서 연산된다.

int는 4 byte의 주소를 가진 타입이다. 

 

pNum1과 pNum2를 보기쉽게 나타내보면..

 

이렇게 포인터의 연산을 이용하여 우리는 하나의 포인터를 이용해 연속된 메모리에 데이터를 넣을 수 있게 되는데,

이러한 기능을 사용하기 쉽게 만들어놓은 타입이 있다.

 

바로 배열(Array)이다.

 

배열은 대괄호"[ ]"를 이용하여 나타내고,

괄호 안에는 배열의 사이즈를 담을 수 있다. 배열은 매우 중요한 부분이니 다음 포스트에서 본격적으로 다뤄보자.

'C,C++' 카테고리의 다른 글

변수의 주소값과 포인터 자료형  (0) 2020.05.17
R-value와 L-value  (0) 2020.05.17
const 위치에 따른 의미들  (0) 2020.05.16
조건문 switch  (0) 2020.04.22
조건문 if, if ~ else if ~ else 가위 바위 보 게임  (0) 2020.04.21
Comments