본문 바로가기
프로그래밍언어/C언어

부록 - 변수와 변수의 시작 주소

by J코딩 2021. 9. 1.
반응형

변수와 변수의 주소 개념에 대해서 알아보겠습니다. 여러분이 1+1, 10+20과 같은 산술 연상이 필요하다면 계산 결과를 어디에 저장하나요? 바로 변수에 저장합니다. 이미 변수란 데이터를 저장하는 임시 저장 공간, 즉 메모리 공간이라고 배웠습니다.

https://jcoding7.tistory.com/entry/%EB%B3%80%EC%88%98-%EC%84%A0%EC%96%B8%ED%95%98%EA%B8%B0-%EB%B3%80%EC%88%98%EB%9E%80

 

변수 선언하기 - 변수란

가정에서 사용한 가정용 분리수거함의 용도를 생각하면 분리수거할 것을 담아두는 임시 저장 공간의 성격이 짙습니다. 컴퓨팅 세계에서 가정용 분리수거함과 같은 역할을 하는 것이 변수입니

jcoding7.tistory.com

이처럼 변수는 연산의 결과(데이터)를 저장하기 위해서도 사용됩니다. 그리고 연산의 결과를 저장하고 있는 메모리 공간의 위치를 변수의 주소라고 합니다. 연산의 결과를 저장한 변수의 메모리 주소를 알고 싶을 대 변수 앞에 & 연산자를 붙이면 됩니다. 그러면 변수의 시작 주소를 알 수 있었습니다. 다음 예제와 메모리 내부를 표현한 그림을 함께 보겠습니다.

5행에서 정수형 변수 a를 만듭니다. (int키워드의 의미는 정수를 의미합니다.)

7행에서 정수형 변수 b를 만듭니다. (int키워드의 의미는 정수를 의미합니다.)

9행에서 변수 a에 3을 저장합니다.

11행에서 변수 b에 a+5를 산술 연산한 결과 즉, a에 3이 저장되어 있으므로 3+5를 연산한 결과를 저장합니다.

13행에서 변수 a에 저장된 값을 출력합니다.

15행에서 변수 b에 저장된 값을 출력합니다.

17행에서 &a를 통해서 변수 a의 시작 주소를 16진수(%x)로 출력하고 있습니다.

19행에서 &b를 통해서 변수 b의 시작 주소를 16진수(%x)로 출력하고 있습니다.

위 그림처럼 변수 a의 주소는 65fe1c이며, b의 주소는 65fe18입니다.(시작주소는 다를 수 있습니다.)

 

자~ 여러분에게 질문하나 던져 보겠습니다. 변수 a의 시작 주소를 알아야 한다면 &a와 65fe1c 중 어느 것이 편리할까요? &a가 더 편할겁니다. 이 때 &a를 논리적 주소, 65fe1c를 물리적 주소라고 합니다.

물리적 주소는 컴퓨터마다 변수의 주소가 다르게 표현될 수 있으므로 예제에서처럼 &a의 주소가 65fe1c가 아니더라도 상관없습니다. 변수 a의 시작 주소를 &a로 알 수 있기 때문입니다. 인간에 가까운 표현을 논리적, 기계에 가까운 표현을 물리적이라고 한다면, 당연히 논리적 표현 &a가 사용하기 편합니다.

반응형

댓글