안녕하세요
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이 나온다면
제대로 작동하고 있는 것입니다.
포인터 변수에 *을 붙여주면
그 포인터가 가르키는 데이터를 얻어옵니다.
정리를 한번 해드리자면
포인터 변수 : 메모리 주소
*포인터 변수 : 주소의 데이터값
이해가 되셧는지요?
이해가 되셧다면
연산자까지 해결 되었습니다!
긴글 읽어주셔서 감사합니다~