목록분류 전체보기 (112)
Shine's dev log
컴퓨터를 사용할 때, 가장 많이 쓰는 말 중 하나가 윈도우이다. "윈도우에서 자꾸 업데이트 하래..", "윈도우 10이 나왔더라" 위와 같이 거의 윈도우 = 컴퓨터 의 개념으로 쓰이기도 한다. 이처럼 잘 알고 있는 윈도우는 운영체제의 일종이다. 윈도우 외에도 리눅스, 맥 등 여러가지 운영체제가 존재한다. 그렇다면 이렇게 알듯 말듯한 운영체제란 무엇인지 자세히 알아보자. 1. 운영체제란? "컴퓨터와 사용자 사이에서 사용을 더 원활하게 해주는 소프트웨어" 라고 정의할 수 있다. 컴퓨터는 크게 4가지로 구분할 수 있다. 컴퓨터를 사용하는 사용자, 사용자가 실행하는 어플리케이션, 실제 컴퓨터를 물리적으로 구성하는 하드웨어, 그리고 운영체제 이렇게 4가지로 구분이 가능한데, 그 구조..
C로 코딩을 하다보면 빠질 수 없이 등장하는 것이 바로 함수 이다. 반복적인 동작을 수행하거나 코드의 전체적인 가독성을 위해서 꼭 필요한 것이 바로 함수이다. 오늘은 함수가 어떻게 데이터를 공유하는지 알아보자. 여기서 데이터란 1. 매개변수 값과 2. 리턴 값을 생각해 볼 수 있다. 우선 다음과 같은 예제를 살펴보자 다음과 같은 경우, main() 에서 int형 변수 x와 y를 test라는 함수의 매개변수로 넘겨주었다. 이 때, x와 y의 값이 a와 b로 선언된 변수에 복사되어 들어간다. 또한, a와 b의 합한 값이 sum 으로 선언된 변수에 복사되어 들어간다. 즉, 함수의 매개변수는 직접적으로 변수 자체를 넘겨받는것이 아니라, 변수 속의 값만 복사되어 넘겨지는 것이다. 그렇다면 다음예시를 살펴보자 위의..
C를 처음 배우면 가장 먼저 배우는 것 중에 하나가 바로 배열이다. 배열은 대괄호 연산자 [ ]를 이용하여 굉장히 직관적으로 초기화되고, 사용되기 때문에 사실 별 어려움없이 사용할 수 있다. 하지만, 이후에 포인터를 배우고 배열과 포인터가 밀접하게 연관되어있다는 사실을 알게되면 멘붕에 빠지기도 한다;; 이번에는 배열과 포인터의 관계에 대해 깔끔하게 정리해보도록 하자. #include int main() { int arr[10] = {0, }; print("%d", arr[0]); } 위와같이 int형 변수 10개를 담은 arr라는 배열을 만들어봤을 때, arr[0]의 값을 print하면 당연히 0이 나온다. 하지만, arr[0]이 아닌 arr를 출력하면 뭐가 나올까? #include int main() ..
신입생 시절, 나를 괴롭혔던 문자열에 대하여 제대로 정리해보자. C에는 문자열을 직접 다루는 자료형이 없다. 그래서 char의 배열을 사용하여 문자열을 '간접적으로' 나타낸다. 하지만, 리스트와는 다르게 배열은 크기가 고정적이다. 그래서 처음 char배열의 변수를 만들 때, 넉넉하게 크기를 설정해줘야 하는데, 그러다 보면 메모리의 낭비가 발생할 수 있다. 예를들어 char s1[100] 으로 설정된 s1라는 변수에 "hello"라는 문자열로 초기화 시킨다면, h, e, l, l, o, \0 이 6개를 제외한 94개의 칸은 낭비되는 것이다. 그렇다고 무턱대고 배열의 크기를 줄이자니 데이터가 잘릴 위험이 있기 때문에 조심스럽다. 이러한 문제점을 해결할 수 있는 것이 바로 char*이다. 예를들어 char *..