메모리

khxxjxx·2021년 4월 18일
0

강좌 : 부스트캠프 모두를 위한 컴퓨터과학(cs50 2019)

4. 메모리

✍메모리주소

// 변수 n의 16진법으로 표현된 메모리의 주소
int n = 50;
printf("%p\n", &n);

&변수명 : 메모리주소를 가져온다
*변수명 : &와 반대로 메모리주소로 간다
%p : 메모리주소를 출력해준다

16진수

진법
10진수255216255
2진수1111 1111
f       f
1101 1000
d       8
1111 1111
f       f
16진수0xff0xd80xff
  • 0부터 9까지는 숫자로 10부터 15까지는 A부터 F까지의 영문자로 표현
  • 16진수를 사용하면 10진수보다 2진수를 간단하게 나타낼 수 있다
  • 16진수를 표현할 때는 앞에 0x를 붙여준다

✍포인터

  • 주소는 반드시 포인터에 저장해야한다
  • 포인터는 주소를 나타내는 것이다
int n = 50;
int *p = &n;

만약 어떤 변수에 주소를 저장하고 싶다면 그 변수의 자료형뿐만 아니라 별(*) 연산자 또한 써줘야 한다

✍문자열

typedef char *string

  • 실제 CS50 라이브러리를 보면 string 자료형은 이와 같이 정의되어 있다
// 두개의 값은 똑같다
string s = "홍길동";
char *s = "홍길동";
  • 문자열은 결국 문자의 배열이고 s[0], s[1],・・・ 와 같이 하나의 문자가 배열의 한 부분을 나타낸다
  • 가장 마지막의 \0은 0으로 이루어진 바이트로 문자열의 끝을 표시한다
  • 여기서 변수 s는 결국 이러한 문자열을 가리키는 포인터가 된다
  • 더 상세히는 문자열의 가장 첫번째 문자 즉 s[0]을 가르킨다
profile
코린이

0개의 댓글