1. 배열 초기화
배열 선언과 동시에 초기화
int main(void){
int arr1[5]={1,2,3,4,5};
int arr2[]={1,2,3,4,5};
int arr3[5]={1,2};
}
지정 초기화(C99)
int arr[6]={[5]=212};
// int arr[6]={0,0,0,0,0,212};
int arr[12]={31,28,[4]=31,30,31,[10]=29};
// int arr[12]={31,28,0,0,31,30,31,0,0,0,29,0};
int arr[]={1, [6]=23};
// int arr[7]={1,0,0,0,0,0,23};
2. 문자 배열과 문자열
문자열(string)은 문자(char)의 배열
초기화
char arr1[] = "abc" ; // char arr1[]={'a','b','c','\0'}
char arr2[100] = "xyz"; // char arr2[100] ={'x','y','z','\0'}
char arr3[] = arr1; // C는 배열로 배열 초기화 불가 -> 오류!!
크기
1. 2차원 배열
개요

int main(void){
int arr1[4];
int arr2[3][4];
}
초기화 (배열 크기 O)
// case 1: 행 담위로 모든 요소들 초기화
int arr[3][3]={
{1,2,3},
{4,5,6},
{7,8,9}
};
// case 2: 행 단위로 일부 요소들만 초기화
// 부족한 부분은 0으로 초기화됨
int arr[3][3]={
{1},
{4,6},
{7,8,9}
};
/*
int arr[3][3]={
{1,0,0},
{4,6,0},
{7,8,9}
};
*/
// case3: 1차원 배열 초기화 형태
// arr[0][0] 부터 arr[2][2]까지 순서대로 초기화
int arr[3][3]={1,2,3,4,5,6,7};
/*
int arr[3][3]={
{1,2,3},
{4,5,6},
{7,0,0}
};
*/
초기화 (배열 크기 X)
int arr1[][4]={1,2,3,4,5,6,7,8};
int arr2[][2]={1,2,3,4,5,6,7,8};
/*
int arr1[2][4]={
{1,2,3,4},
{5,6,7,8}
};
int arr2[4][2]={
{1,2},
{3,4},
{5,6},
{7,8}
};
*/
2. 3차원 그 이상의 배열

1. 배열 인자
배열 인자는 복사해서 보내지 않음
call by reference
문자열도 배열이므로 call by reference로 보냄
다차원 배열은 각 차원의 크기가 같아야 함
2. 배열 매개변수
배열을 매개변수로 받으면 크기를 알 수 없음
int a[10];
a[100]=1; a[-10]=1; // 문법적으로는 오류 X
void f(int a[10]){
a[100]=1; a[-10]=1; // 문법적으로는 오류 X
};
배열을 매개변수로 받으려면 크기도 같이 받아야 함
다차원 배열 매개변수(C99)
void f(int n, double a[][n]);
void g(int m, int n, double a[m][n]);