동적 메모리 할당이란 일반적인 배열은 크기가 고정되어 있다. 이로 인해 많은 문제가 발생한다. 흔히 프로그램을 작성할 당시에는 얼마나 많은 입력이 있을지를 알 수 없기 때문이다. 만약 처음에 결정된 크기보다 더 큰 입력이 들어온다면 처리하지 못 할 것이고, 더 작은 입력이 들어온다면 남은 메모리 공간은 낭비될 것이다. 따라서 이런 문제들을 해결하기 위하여 C언어에서는 필요한 만큼의 메모리를 운영체제로부터 할당받아서 사용하고, 사용이 끝나면 시스템에 메모리를 반납하는 기능이 존재한다. 이것을 동적 메모리 할당(dynamic memory allocation)이라고 한다. 동적 메모리가 할당되는 공간을 히프(heap)라고 한다. 히프는 운영체제가 사용되지 않는 메모리 공간을 모아놓은 곳이다. 필요한 만큼만 할..
Language/C++

포인터의 개념 포인터(pointer)는 다른 변수의 주소를 가지고 있는 변수이다. 모든 변수는 메모리 공간에 저장되고 메모리의 각 바이트에는 주소가 매겨져 있다. 이 주소가 포인터에 저장된다. 주소는 컴퓨터에 따라 다를 수 있으므로 포인터 변수는 대개 정확한 숫자보다는 그냥 화살표로 그려진다. int a = 100; int *p; p = &a; p는 int형을 가리키는 포인터로 정의된다. p가 a를 가리키게 하려면 a의 주소를 p에 대입한다. 변수의 주소는 &a와 같이 & 연산자를 변수에 적용해 추출할 수 있다. 포인터와 관련된 연산자 포인터와 관련된 2가지의 중요한 연산을 알아보자. & 연산자 : 주소 연산자 * 연산자 : 간접 참조 연산자(역참조 연산자) & 연산자 & 연산자는 변수의 주소를 추출하는..

1학년 때 내내 파이썬만 공부했다. 그래서 파이썬으로 어느정도 있어보이는 프로그램들을 만들 수 있게 됐을때, 난 굉장히 자만했다. 오,, 나 코딩천재아냐?ㅋ 그리고 구조체와 포인터를 만난 순간 내 자만은 산산조각났다. 쉬운언어 파이썬만 하던 내게 구조체, 포인터 이런 친구들은 졸랭 어려웠다.. 하지만 얘네를 완전히 이해하질 못 하니 어느정도 이상으로 나아가는 느낌이 들지 않는다. 그래서 이번 방학 때는 완전 다 뿌숴버리겠다는 일념으로, 내게 어려운 것 중 첫번째. 구조체를 뿌숴보겠다. 구조체를 공부하기에 앞서, 배열에 대해 간략히 알아보자. 배열에 대한 이모저모는 조만간 포스팅을 해볼 예정이다. 배열 배열(array)은 거의 모든 프로그래밍 언어에서 기본적으로 제공되는 자료형이다. (파이썬에서는 리스트라..