배열

1 minute read


배열(array)

배열은 변수를 선언한 크기만큼 할당하고 그 공간안에 일자로 변수들을 나열한다. 동일한 자료형으로 표현되는 변수를 한 번에 여러개 선언하여 사용할 수 있다.


우선 배열을 이해하고 사용하기 위해서는 메모리할당 방식을 알아야한다.


1. 배열의 메모리할당

  • 첫 변수의 메모리 주소를 기준으로 각 변수들도 주소를 할당받게 된다.

    int 배열을 선언하고 각 주소를 확인해보면

    #incldue <stdio.h>
    
    int main()
    {
      int arrInt[5] = { 1, 2, 3, 4, 5};
    
      for (int i = 0; i < 5; i++)
      {
        printf("%p\n", &arrInt[i]);
      }
    
      return 0;
    }
    

    위 코드는 한 번에 int를 5개 선언하고 각 공간에 1, 2, 3, 4, 5의 숫자로 초기화 한 뒤, 반복문을 사용해서 각 메모리의 주소를 출력한다.


    출력결과

    array_memory_adress

    우선 메모리주소는 16진수로 표현된다. ( 0123456789ABCDEF )
    위 출력결과를 보면 마지막 문자가 4씩 차이가 나는걸 알 수 있으며 이는 int의 크기인 4byte이고 배열로 5개를 선언하였기 때문에 총 20byte 크기의 메모리를 할당한 하게된다.

  • 배열을 선언할 때 크기는 초기화 리스트를 쓰면 크기가 알아서 할당되어 생략이 가능하다.

    int array[] = { 1, 2, 3, 4 };
    printf("%d", sizeof(array));
    

    메모리크기를 출력하는 sizeof를 써보면 int * 4의 값이 나오게 된다.


2. 각 변수에 접근

  • 배열의 나란히 나열된 점을 이용해 각 변수를 접근할 때 인덱스를 사용한다.
  • 각 변수들은 처음 변수를 기준으로 0부터 시작하는 인덱스를 가진다. 이런 특징이 있기 때문에 배열을 출력할 때는 반복문을 사용하는 경우가 많다.

    arrInt[0] = 100;
    arrInt[1] = 15;
    arrInt[2] = 100000000;
    arrInt[3] = 4;
    arrInt[4] = 19300;
    


3. 문자열 사용

  • char 자료형은 문자를 저장한다.

    char a = 'a';
    
  • 문자열을 저장하기 위해서는 char 배열을 사용한다.

    char a[4] = { 'a', 'b', 'c' };
    char a[4] = "abc";
    

    문자열에는 문자의 끝을 알 수 있게 널문자가 할당된다. 따라서 배열을 선언할 때는 넣고자 하는 문자의 개수보다 크게 해야 에러가 발생하지 않는다.

  • char 자료형의 크기는 1byte이다. char[10]의 배열에는 영어 9자가 들어가고 한글은 4자까지 저장된다. 크기가 2배나 차이 나기 때문에 꼭 필요한 경우가 아니면 문자는 영어로 표현하게 된다.

Tags: ,

Categories:

Updated: