본문 바로가기

모두를 위한 컴퓨터 과학2

[cs50 모두를 위한 컴퓨터 과학] 자료구조(Data Structure) 📝 연결 리스트(Linked list) 배열에서는 각 인덱스의 값이 메모리상에서 연이어 저장되어 있다. 하지만 각 값이 메모리상의 여러 군데 나뉘어져 있다고 하더라도 바로 다음 값의 메모리 주소만 기억하고 있다면 여전히 값을 연이어서 읽어들일 수 있다. ⇒ 이를 ‘연결 리스트’라고 한다. 3은 다음 값이 없기 때문에 NULL(\n, 즉 0)을 다음 값의 주소로 저장한다. typedef struct node { int number; struct node *next; } node; - 연결리스트를 구조체로 정의한 것 배열과 비교해 연결 리스트는 새로운 값을 추가할 때 다시 메모리를 할당하지 않아도 되는 장점이 있다. But, 연결 리스트에 값을 추가하거나 검색하는 경우 이를 위해 해당 위치까지 연결 리스트의.. 2022. 10. 2.
[cs50 모두를 위한 컴퓨터 과학] 메모리(Memory) 메모리 주소, 포인터 C에서는 변수의 메모리상 주소를 받기 위해 '&’이라는 연산자를 사용. #include int main(void) { int n = 50; printf("%p\\n", &n); } 예를 들어, 위와 같은 코드를 실행하면 ‘0x7ffe00b3adbc’와 같은 값을 얻을 수 있고, 이는 변수 n의 16진법으로 표현된 메모리의 주소이다.(보안상 실행시 위치가 매번 바뀜) 반대로 '*'를 사용하면 그 메모리 주소에 있는 실제 값을 얻을 수 있다. 16진수의 유용성 16진수(Hexadecimal)로 표현하면 2진수로 표현했을 때 보다 훨씬 간단해지고 컴퓨터는 8개의 비트가 모인 바이트 단위로 정보를 표현하므로 2개의 16진수는 2진수로 변환되기 때문에 정보를 표현하기 매우 유용하다. 64bi.. 2022. 9. 22.