주소값 3

[CS50] 문자열 비교

오늘은 문자열이 두 개일 때 같은 내용을 담고 있는지?, 또 이 두 개가 직접적으로 비교가 가능한지에 대해 공부해보도록 하겠습니다. 지난 포스팅에서 문자열은 각 문자의 배열이고 각 문자는 메모리에 서로 다른 주소 값을 가지고 있다는 것을 공부했습니다. 실제로 확인해보면 #include int main(void) { char *s = "EMMA"; printf("%p\n", &s[0]); printf("%p\n", &s[1]); printf("%p\n", &s[2]); printf("%p\n", &s[3]); } 이렇게 코드를 작성하고 실행했을 때 주소값이 다르게 출력되는 것을 확인할 수 있습니다. ** 여기서 주소값을 보면 첫 번째 문자인 "E"를 시작으로 메모리상에 바로 옆에 저장되어있는 것을 볼 수 ..

CS 기초/메모리 2021.08.21

[CS50] 포인터

지난 포스팅에서 메모리 주소를 설명하면서 '&'연산자와 '*'연산자를 사용할 때 포인터라는 개념이 나왔는데 오늘은 이 포인터에 대해 공부해보도록 하겠습니다. 다시 한번 설명하자면 '*'연산자는 어떤 메모리 주소에 있는 실제값을 받아오게 해주는 기능을 합니다. 이 연산자를 이용해서 아래와 같이 포인터 역할을 하는 변수 선언도 가능합니다. #include int main(void) { int n = 50; int *p = &n; printf("%p\n", p); printf("%i\n", *p); } 결과는 어떻게 나올까요? 위 코드를 보면 int형 변수 n에는 50이라는 값이 저장되어있습니다. 그리고 *p라는 포인터 변수에 &n이라는 변수 n의 주소를 저장합니다. 그래서 int *p는 *이 이 변수가 포인..

CS 기초/메모리 2021.08.19

[CS50] 메모리 주소

오늘부터는 메모리와 관련해서 공부해보도록 하겠습니다. 오늘은 예전에 문자열과 배열에서 잠깐 다룬 적 있었는데 참조하실분들은 참고해주세요~ https://darmk.tistory.com/entry/CS50-%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EB%B0%B0%EC%97%B4?category=966397 [CS50] 문자열과 배열 C뿐 아니라 많은 프로그래밍 언어들은 문자열을 저장하기 위해 string 자료형을 사용했습니다. 문자열이라는 단어는 문자가 나열되어있다. 즉 배열되어있다.라는 의미로 추측해볼 수 있는데요. darmk.tistory.com 실제로 코딩할때 작성하는 변수들은 컴퓨터 메모리에 어떤 방식으로 저장되는지 그리고 그 저장된 변수의 메모리 주소를 나타내는 방법과 ..

CS 기초/메모리 2021.08.18