C 언어 | 메모리 주소
2021. 2. 19. 23:06ㆍProgramming/C
학습 목표
16 진법을 읽고 쓸 수 있다.
메모리 주소에 접근하고 값을 받아오는 코드를 C로 작성할 수 있다.
16진수
- 컴퓨터 과학에서는 숫자를 10진수나 2진수 대신 16진수(Hexadecimal)로 표현하는 경우가 많다.
- 2개의 16진수는 1byte의 2진수로 변환되기 때문에 정보를 표현하기 유용하다.
- 16진수를 표현할 때는 앞에 '0x'를 붙인다.
- 16진수는 10에서 15까지를 a에서 f로 대입해서 사용한다(대소문자는 구별하지 않는다).
15는 0xf, 16은 0x10인 식이다.
메모리 주소
정수형 변수 n에 50이라는 값을 저장하고 메모리상의 주소를 출력하는 프로그램을 만들어보자. '&'는 메모리상의 주소를 받기 위한 연산자이다.
* 자료형 int는 메모리에서 4바이트 만큼의 자리를 차지한다.
#include <stdio.h>
int main(void)
{
int n = 50;
printf("%p\n",&n);
}
프로그램 실행 결과는 다음과 같다.
프롬프트 창에 16진법으로 표현된 메모리 주소가 나타났다.
6번 줄을 printf("%p\n",&n);이 아닌 printf("%i\n",*&n);으로 바꾸면 결과는 다음과 같다.
위 코드는 먼저 n의 주소를 얻은 다음 해당하는 값을 얻어와 출력한다.
&: What's the adress?
*: Go to the adress!
이 글은 네이버 부스트 코스 David J. Malan(데이비드 J. 말란) 교수님의 모두를 위한 컴퓨터 과학(CS50 2019) 강의를 수강하고 작성한 글입니다. 본 강좌 내 실습에서는 CS50 Sandbox를 사용합니다.
모두를 위한 컴퓨터 과학 (CS50 2019)
부스트코스 무료 강의
www.boostcourse.org
'Programming > C' 카테고리의 다른 글
C 언어 | 문자열과 포인터 (0) | 2021.02.19 |
---|---|
C 언어 | 포인터 (0) | 2021.02.19 |
C 언어 | 왜 배열을 선언할 때 상수 변수값을 크기로 지정할 수 없을까? (0) | 2021.02.04 |
C 언어 | 명령행 인자 (0) | 2021.02.02 |
C 언어 | 문자열의 활용 (0) | 2021.02.02 |