맨위로

C PROGRAMMING - 기초2012. 3. 1. 09:36
안녕하세요 ? 이번 강의에서는 C언어의 배열에 대해서 알아보도록 하겠습니다. 이 글에서는 문자 분류 프로그램의 코드를 통해서 배열을 알아보겠습니다. 코드가 다소 복잡해서 이해가 안될수도있습니다. 이번글에서는 배열에 중점을 두고 읽어주시기 바랍니다. 그외에 형,연산자,수식 같은것들은 글을 진행하면서 알게될것이니 이번글에서는 배열이 어떤것인지 어떻게 쓰는지아는것을 목표로 하겠습니다. 먼저 강의를 시작하기 전에 이블로그에 와주신 모든 분들께 감사의 말씀드립니다. 이제 본격적으로 C언어 배열에대해서 알아보도록하겠습니다.
 
배열(Array)

오늘 배열을 알기위해 살펴볼 코드는 다음과 같다. 이코드를 통해서 배열만을 알아볼것입니다. 행여나 읽는 분들이모르시는 문법이 있을수도있지만 괜찮습니다. 그런 문법들은 글을 진행하면서 자세히 배우게 됩니다.

#include<stdio.h>                  /* 문자 분류 프로그램 */
main()
{
      int c, i, nwhite, nother;
      int ndigit[10];
      nwhite = nother = 0;
      for (i = 0; i < 10; ++i)
      ndigit[i] = 0;
     
      while ( (c - getchar() ) !=  EOF)
      if (c >= '0' && c <= '9')
      ++ndigit[c-'0'];
      else if (c == ' ' ||c == '\n' || c == '\t')
      ++nwhite;
      else
      ++nother;
     
      printf("digits =");
      for (i = 0;i < 10; ++i)
      printf(" %d",ndigit[i]);
      printf(",white space = %d,other = %d\n",
      nwhite, nother);
}

위의 코드를 보면 다음과 같은 코드가 있다.

int ndigit[10];

위의 코드가 바로 배열변수선언이다.  만약 이렇게 선언하게 된다면 ndigit[0] 에서 ndigit[9] 까지 10개를 독립된 변수로 사용할수있습니다. 여기서 0-9는 배열의 첨자라고 합니다. C언어의 배열의 첨자는 0부터 시작됩니다. 첨자는 다음과 같이 정수형 변수나 정수형 상수도 가능하고 정수수식도 가능합니다.

ndigit[i] = 0;

이제 위의프로그램 코드를 간단하게 살펴보도록 하겠습니다.

먼저 다음코드를 살펴보도록하겠다. for문을 사용해서 ndigit 배열의 0을 저장하고있다. 위의코드를 실행하게되면 ndigit 변수에는 0이 저장되게 된다.

for (i = 0; i < 10; ++i)
ndigit[i] = 0;

다음 코드를 한번 살펴보겠다. 이부분에서 주목할부분은 c-'0' 이다. c -'0'을 하는이유는 C언어에서 

char와 int형이 섞여있게되면 모든 변수는 int 형으로 바뀌게 됩니다. 그래서 C 가 '1'이라면 C 에서의 실제값

은 1이 아니고 문자1의 ASCII 값이 됩니다. 그러므로 C에서 '0'을 빼야지만 숫자에 아무영향을 미치지 않고 원하는 숫자를 

사용하게됩니다. 위의 코드에서는 이 숫자가 배열의 첨자로 사용되고 있습니다. 

여기서는 c-'0' 이 배열의 첨자로 사용되고 있다는 점만 알면된다.


++ndigit[c-'0'];


마치며

일단 이글은 배열이 어떻게 쓰이는지를 알아보는 글입니다. 자세한 배열은 글이 진행되면서 다시다루게됩니다.






'C PROGRAMMING - 기초' 카테고리의 다른 글

C언어 - 매개변수값 전달  (0) 2012.04.22
C언어 - 함수  (0) 2012.04.21
C언어 - 배열  (6) 2012.03.01
C언어 - 문자 입출력  (2) 2012.02.21
C언어 - 상수정의  (0) 2012.02.18
C언어 - For 문  (6) 2012.02.16

Posted by STIH

댓글을 달아 주세요