Engineering Note

[C] 배열 본문

Programming Language/C programming

[C] 배열

Software Engineer Kim 2021. 2. 22. 22:58

배열 사용 이유

  • 같은 형태의 많은 데이터를 선언할 경우 사용한다.
  • 배열을 사용하면 반복문을 사용하기 용이하다.
  • C언어로 학생 100명의 성적 평균을 구할 경우 성적값을 저장할 float 또는 int 타입의 변수를 100개를 선언하고 모두 더한 뒤 학생 수로 나눌 경우를 생각해보면 모두 더하는 것도 쉽지 않을 뿐 아니라 변수 선언도 쉽지 않다. 하지만 배열을 사용하면 쉽게 변수를 선언하고 반복문을 통해 합을 구하는 것도 쉽다.

배열의 선언

  • 자료형 배열명[크기];
  • 자료형 배열명[크기] = {값, 값, 값};
  • int numArr[10]={11,22,33,44,55,66,77,88,99,110};
    • 크기가 10인 int형 배열을 선언 한다는 뜻
    • 배열을 선언하면서 값을 초기화할 때는 {}안의 값 개수는 배열의 크기보다 작아도 되지만 크면 안된다.
    • {}를 사용하여 배열에 값을 할당하는 방법은 배열을 선언할 때만 사용할 수 있으며 이미 선언된 배열에는 사용할 수 없다.

배열의 초기화

  • 배열도 변수와 바찬가지로 최초 할당된 저장 공간에는 쓰레기 값이 저장되어 있다. 그렇기 때문에 배열도 원하는 값을 가지려면 선언과 동시에 초기화를 해야 한다.
  • int arr[15] = {1,2,3,4,5};
    • 가장 기본적인 초기화 방법, 선언과 동시에 {}로 묶어서 초기화
  • int arr[5] = {1,2,3};
    • 초기값이 배열 요소 개수보다 적은 경우
    • 왼쪽부터 차례로 초기화 하고 남은 배열 요소는 모두 0으로 채운다.
    • 0번 인덱스, 1번 인덱스, 2번 인덱스는 1,2,3으로 초기화 되고 3번 인덱스 4번 인덱스는 모두 0으로 자동 초기화된다.
  • int arr[1000] = {0};
    • 자동 초기화 기능을 사용하면 배열 요소 개수가 아무리 많아도 모든 요소를 쉽게 0으로 초기화할 수 있다.
  • int arr3[] = {1,2,3};
    • 배열 요소 개수가 생략된 형태
    • 배열을 선언할 대 값을 초기화한다면 배열의 크기를 생략할 수 있다.(초기화를 하지 않을 때는 생략할 수 없다.)
    • 이 경우 컴파일러는 초기값 개수만큼 배열 요소 개수를 정하고 저장 공간을 할당.
    • arr3은 크기가 3인 배열이고 arr[3] (4번째 인덱스)는 존재하지 않는고 접근 할 수 없다.

배열 요소에 접근하기

  • 배열에 값이 저장된 공간을 요소(element)라고 한다.
  • 배열에서 각 요소에 접근하려면 배열 뒤에 [](대괄호)를 사용하며 []안에 각 요소의 인덱스를 지정해주면 된다.
    • 배열[인덱스]
    • numArr[0]; // 첫 번째 요소, 인덱스 0
    • numArr[5]; // 여섯 번째 요소 인겍스 5
  • 주의할 점은 배열의 인덱스는 항상 0부터 시작한다는 점이다. 따라서 배열 numArr의 첫 번째 요소는 numArr[0]이 된다.

배열의 크기 구하기

  • sizeof(배열명)/sizeof(요소의 크기) // 배열의 크기
  • sizeof(배열명); //배열이 차지하는 전체 공간의 크기

배열과 포인터

  • 배열의 이름도 포인터이므로 인덱스가 0부터 시작하면 요소접근과 포인터 연산이 일치한다.

 

 

-------------------------------------------------------------------------------------------------------------

출처 : 혼자 공부하는 C언어, C언어 코딩도장

Comments