본문 바로가기

MFC

MFC_ & 는 왜 사용할까?(&연산자)

& 연산자는 C++에서 변수의 주소를 얻기 위해 사용된다.

이 연산자는 변수의 주소를 반환한다.

 

ex)   temp.Send(&value, sizeof(int));

 

&valuevalue 변수의 메모리 주소를 의미한다.

 

따라서, temp.Send(&value, sizeof(int)); 코드는 value 변수에 저장된 int 타입 데이터를 네트워크를 통해 전송하라는 의미한다.

 

 

MFC 예제에서 &를 사용하는 이유 설명.

 

 

포인터와 주소:

 

 1) 주소 연산자 &:

& 연산자는 변수의 메모리 주소를 반환한다. 예를 들어, int value = 10;이라고 선언하면, value10이라는 값을 저장한다. 그러나 &valuevalue가 저장된 메모리 위치의 주소를 반환한다.

 

 2) 포인터:

포인터는 다른 변수의 메모리 주소를 저장하는 변수다. 포인터를 사용하면 메모리 주소를 통해 변수에 접근할 수 있다.

 

왜 주소를 사용하는가?

 

 1) 함수 인자 전달:

많은 함수들은 데이터의 주소(포인터)를 인자로 받는다.

이는 두 가지 주요 이유 때문이다:

 

  효율성: 큰 데이터를 직접 복사해 전달하는 대신 주소를 전달하면 메모리 사용량과 처리 시간을 줄일 수 있다.

 

  변경 가능성: 함수가 인자로 받은 데이터를 수정할 수 있다. 값 자체를 전달할 경우, 함수 내에서 수정된 값은 함수 밖으로 반영되지 않지만, 주소를 전달하면 함수 내의 수정이 원본 데이터에 영향을 미친다.

 

 2) 메모리 관리 및 네트워크 통신:

네트워크 통신이나 파일 입출력 같은 작업에서는 보통 데이터의 주소와 크기를 전달해 데이터를 처리한다. 이는 데이터가 메모리의 특정 위치에서 읽히거나 쓰이는 것을 가능하게 한다.

 

구체적인 예:

 

   - temp.Send(&value, sizeof(int));에서 Send 함수는 데이터를 전송하기 위해 메모리 주소를 요구.

   - &valuevalue 변수의 주소를 Send 함수에 전달.

   - sizeof(int)는 전송할 데이터의 크기를 바이트 단위로 지정.

 

이와 같은 방식으로 Send 함수는 value가 저장된 메모리 위치로부터 데이터를 읽어 네트워크로 전송할 수 있게 된다. 이 과정에서 &를 사용하여 변수의 주소를 전달하는 것이 핵심이다.