배열
-
[자료구조] 연결 리스트 : 코딩 그리고 시연Stage/Computer Science 2021. 6. 1. 23:27
학습 목표 연결 리스트를 구현하고 사용할 수 있다. 연결 리스트와 배열의 장단점을 설명할 수 있다. 1. 코드 #include #include //연결 리스트의 기본 단위가 되는 node 구조체를 정의합니다. typedef struct node { //node 안에서 정수형 값이 저장되는 변수를 name으로 지정합니다. int number; //다음 node의 주소를 가리키는 포인터를 *next로 지정합니다. struct node *next; } node; int main(void) { // list라는 이름의 node 포인터를 정의합니다. 연결 리스트의 가장 첫 번째 node를 가리킬 것입니다. // 이 포인터는 현재 아무 것도 가리키고 있지 않기 때문에 NULL 로 초기화합니다. node *list ..
-
[자료구조] 배열의 크기 조정Stage/Computer Science 2021. 6. 1. 23:23
학습 목표 배열의 크기를 조정하는 코드를 작성할 수 있다. 1. 배열의 크기 조정 배열의 크기를 키우려면 어떻게 해야 할지 생각해보자. 배열의 크기가 3이고, 이 크기를 4로 하고 싶다면 단순히 생각하면 크기가 3인 배열 바로 옆에 한 바이트의 공간만 더 붙이면 된다. 실제로도 이런 방식으로 배열의 크기를 조정할 수 있을까? 실제로는 키우려는 배열 메모리 주위에는 다른 메모리들로 둘러 쌓여있을 확률이 높다. 기존에 사용하고 있던 메모리 뒤에는 다른 데이터들이 담겨 있을 수 있는데 이 상태에서 데이터를 메모리를 새로 할당하지 않고 메모리 크기를 키운다면 뒤에 있던 메모리에 데이터를 덮어쓰는 일이 발생할 수 있다. 따라서 안전하게 새로운 공간에 큰 크기의 메모리를 다시 할당하고 기존 배열의 값들을 하나씩 옮..
-
[배열] 문자열과 배열Stage/Computer Science 2021. 5. 27. 22:50
학습목표 문자열이 C에서 정의되는 방식과 메모리에 저장되는 방식을 설명할 수 있다. 1. 문자열? 문자열(string) 자료형의 데이터는 문자(char) 자료형의 데이터들의 배열이다. string s = "HI!"; 문자열 s는 문자의 배열이기 때문에 메모리상에 아래의 그림과 같이 저장된다. 인덱스로 각 문자에 접근이 가능하다. s[0] = H s[1] = I s[2] = ! s[3] = \0 3번째 인덱스의 '\0' 은 문자열의 끝을 나타내는 null 종단 문자이다.
-
[배열] 배열Stage/Computer Science 2021. 5. 27. 22:49
학습목표 배열을 정의하고 사용하는 방법을 설명할 수 있다. 1. 메모리 C에는 다음과 같은 여러 자료형이 있고, 각각의 자료형은 서로 다른 크기의 메모리를 갖는다. bool: 1byte char: 1byte int: 4byte float: 4byte long: 8byte double: 8byte string: ?byte 컴퓨터에서는 RAM이라는 물리적 칩이 메모리 역할을 한다. 쉽게 생각하면 위 사진에 나와있는 조그만 여러 개의 노란색 사각형이 메모리를 의미하고, 작은 사각형 하나는 1바이트를 의미한다. 2. 배열 배열은 같은 자료형의 데이터를 메모리상에 연속으로 저장하고 이를 하나의 변수로 관리하기 위해 사용된다. #include #include int main(void) { // Scores int ..
-
[배열] 컴파일링Stage/Computer Science 2021. 5. 27. 10:40
학습목표 컴파일링의 네 단계를 설명할 수 있다. 1. 동작원리 이전에 사용한 예제 코드를 다시 보면서 동작 원리를 이해해보자. 1.1 #include int main(void) { printf("hello, world\n"); } main 함수를 만나서 프로그램을 시작한다. printf 함수를 수행해야 하는데, 그러려면 stdio.h 라이브러리가 필요하다. stdio.h 라이브러리에 대해 좀 더 자세히 알아보자. stdio.h는 헤더 파일이고 C언어로 작성되어 있으며 파일 확장자가 .h로 끝난다. stdio.h 파일에는 printf 함수의 프로토타입이 있어서 Clang 컴파일러가 프로그램을 컴파일 할 때 printf가 무엇인지 알려준다. 1.2 clang hello.c로 컴파일하고 그 결과 a.out 이..