배열의 정의



배열은 동일한 타입을 가지는 변수들의 유한 집합
- 배열의 기본형식
- type 배열명[크기][크기]....;
- 배열명은 배열의 이름이고 [] 괄호 사이에 있는 값은 몇 개의 단위가 묶여서 구성하는지 지정하며 자연수로된 상수만 적어야 한다.

 



 배열의 특징


  1. 배열의 요소의 번호인 첨자는 항상 0부터 시작한다(Zero Base)
    - 컴퓨터의 첫번째 시작은 항상 0이다.
    - int a[5]; 라고 선언된 배열의 시작은 0~4 ( n-1 )의 번호이다.

  2. 배열의 총 메모리 양은 배열의 크기에 배열의 요소의 크기를 곱해서 구할 수 있다
    - sizeof(타입) * 정수(크기, 갯수)
        예시> int a[5]; => sizeof(int) * 5 => 4byte * 5 => 20byte
    - 배열의 크기 = sizeof(배열) / sizeof(배열[0])
        예시> sizeof(int a[5])/sizeof(a[0]) => 20byte / 4byte => 5개

  3. 배열을 선언 시 크기값은 반드시 상수 이어야 한다.
    - 배열의 생성 시는 상수를 입력해 주어야 하지만,
      생성 이후에는 i라는 int형 변수값을 첨자로 사용할 수 있다.

  4. 배열의 범위를 점검하지 않는다.
    - int ar[5]; 로 정해져 있는 경우 int a[8]; 이면 컴파일은 되지만 정상적인 실행은 되질 않는다.
        그렇기 때문에 보통은 반복문을 이용해서 배열의 범위만큼만 루프를 돌도록 해주면 배열의 범위를 벗어나지 않는다.
    - for (i=0;i<5;i++)
      {
        if( i>=0 && i< 5)
       {
            x += a[i];
       }
    }
     


 다차원 배열



2차원 배열은 [] 첨자 두 개를 사용하는 배열이고 차원이 늘어날 수록 [] 첨자 연산자가 늘어날 수록 차원이 높아진다.


int apple[3][6]; 
정수형 변수 6개가 3개의 묶음으로 생성 된다. 생성되는 배열 요소는 6 * 3 = 18개를 apple 이라는 배열명으로 선언한 것.

Apple[0][0]

Apple[0][1]

Apple[0][2]

Apple[0][3]

Apple[0][4]

Apple[1][0]

Apple[1][1]

Apple[1][2]

Apple[1][3]

Apple[1][4]

Apple[2][0]

Apple[2][1]

Apple[2][2]

Apple[2][3]

Apple[2][4]


이 배열이 메모리상에 생성된 모양을 그려보면 위와 같다. 하지만 메모리는 선형적인 구조이기 때문에 이해를 돕기위해 위와 같이 그려서 관리할 뿐 실제로는 일직선으로 연결 되어 있다. 


배열명은 단독으로 사용되는 배열의 시작번지값을 가지는 포인터 상수이다.

즉, 배열명만 쓰면 배열의 시작번지를 가리키는 포인터 값이 된다.

 



 배열 초기화



배열은 여러 변수들의 집합이며 정수형 변수나 실수형 변수와 자격은 동일하며 변수에 적용되는 규칙이 배열에서 똑같이 적용된다.
배열의 부류 지정자도 일반 변수와 동일하며 효과 또한 동일하다. 

int apple[5]; 와 같이 초기화를 하지 않을 경우 쓰레기 값이 들어가게 된다. 


type 배열명[크기]={초기화값들};


int apple[5] = {4,8,3,69,-7};

위와 같이 선언과 동시에 초기화를 메모리를 할당 받음과 동시에 초기화 값들로 메모리를 채운다.

초기식 int number[1000] = {1,2,3,0,0,............... }

즉 비어 있는 초기화의 경우 995개가 다 0으로 채워진다


배열 크기와 초기값이

결과

꼭 맞으면

만사형통 / int a[2][2]={1,2,3,4};

초기값이 모자라면

나머지는 0
int a[2][3]={{1,3},{4,5,}};

초기값이 남으면

에러로 처리
int a[2][3]={{1,2,3},{4,5,}};

배열크기를 생략하면

개수만큼 자동으로 크기 설정
int a[][2]={{1,2},{3,4},{5,6}};



 



 배열의 활용



불규칙한 정보를 담아 그걸 표현하는 형태로 활용이 가능하고 난수로 생성한 좌표를 배열에 저장해 놓고 필요할 떄 사용할 수 도 있다.
작업 결과를 저장하는 데에도 사용하게 된다. 

 


 


 배열은 동일한 타입의 유한한 집합

 다차원 배열을 사용할 수 있으며 int a[2][3]의 경우 정수용 변수 3개의 묶음이 2개가 있는 것이라고 볼 수 있다.

 

출처 : soen.kr



'언어 > C' 카테고리의 다른 글

배열과 포인터 그리고 문자열  (0) 2016.04.19
표준함수  (0) 2016.03.19
기억부류  (0) 2016.03.19
함수와 프로시저  (0) 2016.03.18
연산자  (0) 2016.03.14

+ Recent posts