오늘은 포인터 연산자에 대하여 배우게 될 건데요

포인터 연산자는 제가 그냥 포인터와 관련된 연산자를 간단하게 말하기 위해서 임의로 정한 말이니 뭐... 딱히 알아두시지 않으셔도 좋을 것 같습니다.

포인터 연산자는 두개정도 있습니다.

&와 *이 포인터 연산자로 존재하는데 *은 곱셈 연산자와는 거리가 멀다 연산이 되는 피연산자라는 녀석이 존재하는데 여기서의 피연산자는 2개가 아닌 한개이기에 곱셈연산자가 아닙니다.

그러니 곱셈연산자와 포인터 연산자를 혼돈하지 않는 것으로 해야할 것 같습니다.

일단 &연산자를 설명하려고 하는데

이 연산자는 전에 말했던것 같기도하고..... 아무튼 자세히 다시 설명을 하려고 하니 일단 들어두시는 것을 추천합니다.

아무튼!!이 연산자는 변수의 주소(이름)을 반환하는 연산자입니다.

그래서 표현을 하자면

1
2
3
4
5
int main() {
  int nm = 7;
  int * pnm = &nm;
  //코드
}
cs

이런 식으로 나오게 될겁니다.

그러면 이제 & 연산자의 피연산자는 변수이어야 합니다.

그러니 다른 것이 온다고 하더라도 오류를 뿜뿜하고 내뿜지 않을까 합니다.

또한 주의를 해야할 점으로는 int형 변수는 int형 포인터 변수에 저장을 해야 합니다.

또는 이 반대의 경우는 용납이 가능합니다.

int는 int에 저장을 해야할 필요가 있습니다.

이어서 *연산자를 설명하도록 하겠습니다.

이 연산자는 메모리 공간에 접근할 시 사용하는 연산자입니다.

그러면 간단하게 설명을 하도록 하겠습니다.

만약

1
2
3
4
5
int nm = 100, nm1 = 100;
int * pnm;
pnm = &nm;
(*pnm) += 48;
printf("nm : %d, nm1 : %d", nm, nm1);
cs

이러한 코드가 존재한다면 이렇게 표현이 가능합니다.

1| nm이라는 변수에 100의 값을 nm1이라는 변수에 100의 값을 저장한 상태로 선언합니다.

2|pnm이라는 포인터 변수를 선언합니다.

3|pnm이라는 포인터 변수는 nm이라는 변수를 가리킵니다.

4|pnm이라는 포인터 변수가 가리키는 변수에 48을 더하고 저장합니다.

5|"nm : (nm의 값), nm1 : (nm1의 값)"을 출력합니다.

라는 의미로 해석이 가능해 집니다.

그러면 이 코드를 출력했을 시

nm은 148이 출력되고 nm1은 100이 출력됩니다.

그러면 4번 째 줄을 보는 것으로 설명을 마치겠습니다.

4번 째 줄의 형태는 이러합니다.

*pnm 즉 pnm이 가리키는 nm에 48을 더하고 저장하는 코드가 되는 것이죠 네... 아무튼!! 이렇게 사용이 가능해 집니다.

그러면 다음 강좌에서 뵙도록 합시다.


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,