일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 아스키코드
- 컴퓨터과학
- 알고리즘
- 남양주맛집
- 건대입구맛집
- JavaScript
- Django
- c언어문자열
- DOM
- popupmenubutton
- 성수동카페
- 속초여행
- 장고
- removetooltip
- pipenv
- 강원도속초맛집
- 노마드코더
- 포인터
- Python
- BeautifulSoup
- 추상클래스
- python3
- FLUTTER
- richtext
- 코딩독학
- 상속
- 자바
- 정렬알고리즘
- 가상환경
- 부스트코스
- Today
- Total
YUYANE
C / 16진법과 메모리 주소(&연산자, 포인터) 본문
학습 강의
www.boostcourse.org/cs112/lecture/119027
www.boostcourse.org/cs112/lecture/119028
16진법의 유용성
- 컴퓨터의 메모리와 파일(이미지 등)을 만들거나 수정할 때 컴퓨터나 휴대폰 속 메모리의 위치를 각 바이트에 고유한 숫자를 부여함으로써 표현한다.
- 아스키 코드에 의해 알파벳은 10진수의 숫자에 해당한다. 문제는, 컴퓨터로 처리하기 위해 10진수를 2진수로 표현하게 되면 숫자가 너무 길어지게 된다. 그런데, 16진수로 표현하면 아래 예시에서도 볼 수 있듯이 2진수로 표현할 때 보다 훨씬 간단해진다.
- 10진수, 2진수, 16진수의 비교 예시
( 16진수는 16진수를 구분하기 위해 앞에 '0x'를 붙인다. 이외의 다른 의미는 없다.)
- 또한 컴퓨터는 바이트 단위(1 byte = 8 bits)로 정보를 표현하는데, 2개의 16진수는 1bytedml 2진수로 변환되기 때문에 정보 표현하기에 매우 유용하다.
16진법의 표기 방법
0 1 2 3 4 5 6 7 8 9 a b c d e f
- 알파벳 a - f 가 10 - 15를 대신한다.
- 다음 수는 10진수로 255를 16진수로 나타낸 것이다.
메모리 주소, &연산자와 포인터(*)
- 변수를 선언하면, 자료형에 따라 일정 크기를 차지하며 메모리에 저장된다. (예를 들어 int형이라면 4바이트 자리 차지)
- C에서는 '&' 이라는 연산자를 사용하여 변수의 메모리상 주소를 받을 수 있다.
- 반대로 '*'를 사용하면 그 메모리 주소에 있는 실제 변수의 값을 얻을 수 있다.
#include <stdio.h>
int main(void)
{
int n = 50;
printf("%p\n",&n);//what's the address?, 출력 결과 : 0x7ffec373abac
printf("%i\n",*&n);//GO to the address, 출력 결과 : 50
}
- 변수에 메모리 주소를 직접 저장할 수 있는데, 그럴 땐 포인터를 사용해야 한다. 포인터는 저장되는 그 메모리 주소를 가리키는 역할을 한다.
#include <stdio.h>
int main(void)
{
int n = 50;
printf("%p\n",&n);//what's the address?
printf("%i\n",*&n);//Go to the address
int *p = &n; // 자료형 int를 가리키는 포인터, 주소는 반드시 포인터에 저장
printf("%p\n",p); // 출력 결과 : 0x7ffea22ebfac
printf("%i\n",*p); // 출력 결과 : 50
}
'Programming Languages > C' 카테고리의 다른 글
C / malloc() 과 free() (0) | 2021.02.23 |
---|---|
C / 포인터와 문자열 (0) | 2021.02.16 |
C / 명령행 인자 ( command line argument) (0) | 2021.01.26 |
C / 컴파일 과정에 대해서 (0) | 2021.01.25 |
C / 포인터 사용하기 (코드리뷰) (0) | 2021.01.22 |