티스토리 뷰

Application/C/C++

[강좌] 블럭쌓기 만들기 9일차

알 수 없는 사용자 2012. 1. 2. 02:52

강좌에 들어가기 전에..

참으로 오랜만입니다.

이것저것 하느라 바빴네요..

여러가지 행사가 있었어요..

이제 쬐끔 한가해졌으니, 진행하도록 하겠습니다..

배열.. 배열이 뭐여?

메모리를 할당해주는겁니다. 끗.

이라고 하고 싶지만 일단은 뭐.. 간단한 예제를 볼까유

#include <iostream>
int main()
{
  const int SIZE = 10;
  int sum[SIZE] = {0, };
  for(int i =1; i < SIZE; i++)
    for(int j =0; j <= i; j++)
      sum[i] += j;
  for(int i =1; i < SIZE; i++)
    std::cout << "Sum of 1 to " << i << " : " << sum[i] << std::endl;
  return 0;
}
 

자, 일단 본문과 좀 상관없는 이야기로, const int는 c에서 #define 많이들 쓰실텐데.. 아무래도 const가 좀더 명확하지 않나 싶습니다..

그리고 배열을 쓰는 가장 큰 이유는.. 뭐 아무래도 인덱싱(마땅한 말이 떠오르질 않네요.. 이거보다 알기 쉬운 단어 있으면 추천 받습니다) 때문에 그렇죠..

DB도 마찬가지겠구요..

내부적으로 어떻게 구현되는지는 OS 커널에 관련된 책을 보시면 알 수 있으실테고요(나중에 시간이 좀 많이 나면 이부분은 업데이트 하겠습니다)..

일단은 순차적으로 0부터 시작되는 인덱스가 있는거라고 보시면 돼요..

사실, 다른 언어들은 문자열에 대한 배열도 그냥 쉽게 지정해버립니다만, C와 C++은 그게 좀 어렵습니다..

제가 Java only의 언어스킬을 가지고 있는 사람을 무시하는 경향이 있는 이유가 여기입니다..

물론 개발자가 문자열을 어떻게 배열로 만드는지 꼭 알 필요는 없다고 보기도 합니다만..

그 동적할당과 해제를 경험하면서 효율과 속도라는 목적을 달성하려면 얼마나 많은 고민을 해야 하는데요..

그런 고민 한번도 안 해본 개발자를 개발자라고 말할 수 있을까요?

뭐, 여기서 태클 거실분들이 상당히 많을수 있겠습니다만, 지극히 주관적인 견해라는건 미리 말씀드려놓을게요..

제가 아는 많은 분들도 비슷한 견해를 가지고 있지만 어쨌거나 지극히 주관적인 견해입니다..

어쨌거나, 이미 해당 문제는 아주 많은 프로그램에서 다루고 있습니다..

하지만 한번은 생각하고 넘어가야 할 문제이기도 하지요..

그런데 따지고 보면, Win32 계열에서 요 문제를 고민할 경우, 찾을 수 있는건 추상적인 정보들 뿐이라는거죠..

일반적으로 OS에 대해 공부하는 분들 보면 상당히 광범위하게 공부를 하는데, 그건 파다보니까 그렇게들 되신거고, 초반에는 모르는것만 해당 코드를 뒤지는것부터 시작하는것도 나쁘지 않습니다..

 

배열 자체는 위에도 말씀드렸듯, 메모리를 할당해주고 인덱싱을 해주는것 뿐입니다..

실제로 C에서 사람들이 어렵다고 하는게 포인터랑 동적배열인데..

많은 분들이 본질적인 측면보다는 아무래도 눈에 보이는게 중요할테니 빙빙 돌려가면서 말을 하기 때문이려나요..

기본적인걸 이해하면 응용을 할 수 있습니다..

다들 응용단계로 진입하면, 기본은 너무 기본이라 다들 잘 알거라 생각하는거겠지요..

 

어차피 오프라인 강의입니다..

여러분들은 여러분의 방식대로 가변문자열을 어떻게 배열로 만들 수 있을지 연구해 보세요 ㅋㅋ

존나 어렵습니다..

제가 이거 하나때문에 몇달씩 고민한적도 있었는데, 그게 절대 뻘짓은 아니더군요..

이런게 싫으면 개발자나 뭐 이런 비슷한거 하지 마세요..

시간낭비입니다..

 

오늘의 강의는 이것으로 마칩니다..