본문 바로가기

Study/C프로그래밍

[C프로그래밍] #6 배열

배열의 정의

  • 동일한 자료형을 갖는 자료형의 리스트
  • 배열의 각 요소는 하나의 변수로 취급
  • 배열은 배열명과 첨자로 구분
  • 배열의 선언 형태

1. 1차원 배열

  • 배열의 첨자가 하나만 있는 배열
  • 첨자의 개수는 배열 전체의 구성요소의 개수를 의미
  • 배열의 각 요소는 배열명과 첨자로 구분
  • 1차원 배열 선언 형태
  • int a[10] // 자료형 배열명[개수]
  • 초기화 방법
/*일일이 선언*/
int array[4]; // 배열 선언
array[0] = 10;
array[1] = 20;
array[2] = 30;
array[3] = 40;

/*배열선언과 동시에 초기값 할당*/
int array[4] = {10, 20, 30, 40}; // 각 요소에 초기값 할당
int array[ ] = {10, 20, 30, 40}; // 배열의 크기 생략 가능
int array[4] = {10, 20, 30, }; // array[3]=0으로 초기화
int array[4] = {10, 20, , 40}; // 에러 발생

/*외부로부터 자료를 입력받아 초기화*/
int x[10];
for(i=0; i<10; i++){
	scanf("%d", &x[i]);
}

 

2. 2차원 배열 

  • 2차원 배열로서 배열명은 a이고 3행 4열로 된 12개의 요소를 가진 정수형 배열
  • int a[3][4] // 자료현 배열명[행의 수][열의 수]
  • 초기화 방법
int arr[3][3] = {1,2,3,4,5,6,7,8,9}; // 3x3=9개
int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

 

3. 3차원 배열

  • 3차원 배열로서 배열명은 a이고 2면 3행 4여로 24개의 요소를 가진 정수형 배열
  • int a[2][3][4]; // 자료형 배열명[면의 수][행의 수][열의 수]
  • int a[2][3][4] = {{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{17,18,19,20},{21,22,23,24}}}

 

4. char형 배열

char str[12]; // char 배열명[문자열 길이 + 1]
  • char형 배열선언과 초기화
char name[] = "HONG GIL DONG"; // 문자열 단위로 초기화
char address[] = {'s', 'e', 'o', 'u', 'l', '\0'}; // 문자 단위로 초기화('\0' 문자를 삽입해야함)
  • 첫번째 예시에 대한 설명
  • null 문자가 자동적으로 추가가 되기 때문에 char name[14]라는 수로 표현해주는 게 맞다
  • 문자열 단위로 초기화해 줄 경우에는 자동적으로 삽입
  • 두번째 예시에 대한 설명
  • 문자 단위로 초기화해 줄 경우 자동적으로 삽입되지 않기 때문에 null문자를 꼭 삽입해줘야 한다
#include <stdio.h>
void main(){
	char name[] = "HONG GIL DONG"; 
	char adr1[6] = {'s', 'e', 'o', 'u', 'l', '\0'};
    char adr2[6] = {'s', 'e', 'o', 'u', 'l'};
    printf("\n name : %s", name); // HONG GIL DONG
    printf("\n name : %s", adr1); // seoul
    printf("\n name : %s", adr2); // seoul > seoul 다음에 원하지 않는 값이 붙을 수 있음
}

 

배열을 함수의 매개변수로 사용할 경우

  • 함수 호출 시 배열명만 명시하여 호출
  • 함수의 헤더에는 1차원 배열의 경우 크기 생략 가능
  • 다차원 배열의 경우 가장 높은 차원의 크기 생략 가능
반응형