C++

[ITSKeleton] C++ 포인터 연산자

ITSkeleton 2016. 10. 13. 14:44
728x90
반응형

안녕하세요

ITSkeleton 입니다.


이번에는

포인터의 연사자들에 대하여 알아보려 하는데요


잘따라 오신다면 금방 하실수 있을거라 생각합니다 ㅎㅎ


연산자에는

두종류가 있습니다.


1. &연산자

2. *연산자


이렇게 두가지가 있는데요.


 &연산자 부터 알아볼까요?

기호 & 는 비트 연산자로도 사용되는것은 알고 계실거라 생각합니다.


int Exam;

int *Final;

Final = &Exam;


위의 코드로 모든것을 설명 할 수 있을것 같네요.


저렇게 변수 앞에 & 기호를 쓴다면 변수의 포인터를 얻는 연산자로 바뀝니다.

Final 포인터 변수 안에

Exam 주소가 저장이 되는 것이지요

&Exam 은 Exam변수의 메모리 주소를 의미합니다.

그렇기 때문에

메모리 주소를 저장하는 포인터 변수에

값을 저장하기 위해서는

& 이 기호를 사용하여 저장 시켜주는 것이지요.


간단한 코드로 출력을 해보면서 이해하도록 해볼까요


int Exam = 100;

int *Final = NULL;

Final = &Exam;


printf("Exam 변수의 메모리 주소 : %p\n", Final);


위의 코드를 그대로 작성해보시고

출력을 한번 확인해 보세요


그럼 메모리 주소의 값이 나타나게 될것입니다.



2. *연산자


이제 2번째 연산자인 * 에 대하여 알아볼까요?


*은 많은 곳에서 사용하고 있지요?


곱셈에서 사용될수도 있고 포인터로 선언할때 사용하기도하고.


이번에는 포인터로 이미 선언한 변수 앞에 * 기호를 붙이면 어떻게 될까요??


역시 간단하게 코드로써 알아보도록 하겟습니다.


int exam1 = 1, exam2=2;

int *point = NULL;

point = &exam1;

exam2 = *point;

printf("exam2의 변화 : %p\n", exam2);


exam2의 처음 정해진 값은 2 입니다.

포인터를 이용해서 exam1의 메모리 주소를 가져와서 point에 저장을 시켯지요

그다음!

*point를 exam2에 넣어주었습니다.


저 코드를 한번 돌려보세요!


결과 값이 1이 나온다면

제대로 작동하고 있는 것입니다.


포인터 변수에 *을 붙여주면

그 포인터가 가르키는 데이터를 얻어옵니다.


정리를 한번 해드리자면


포인터 변수 : 메모리 주소

*포인터 변수 : 주소의 데이터값


이해가 되셧는지요?


이해가 되셧다면

연산자까지 해결 되었습니다!


긴글 읽어주셔서 감사합니다~ 

728x90
반응형