목차:
*배열의 개념
*배열의 선언과 초기화
*일차월 배열
*다차원 배열
1.배열
역할: 배열을 사용하면 한번에 여러 개의 변수를 생성할수 있다.
(변수=주택 , 배열=아파트)
2.배열 선언
int score[10]; //자료형 배열이름 [요소의 개수]
ex) float name[50]; // 50개의 flaot형 값을 가지는 배열 name
*요소들이 동일한 자료형을 갖는다.
*배열의 원소의 번호인 인덱스는 0부터 시작이다!
int score[5]; //0~4까지임
...
score[5]=60; //오류가 발생함
3.배열요소 접근
socre[10]=70; //인덱스가 10인 곳에 70을 할당하겠다.
4.배열과 반복문
반복문을 사용해서 배열의 원소를 간편하게 처리할수 있다.
score[0]=0;
score[1]=0;
score[2]=0;
score[3]=0;
score[4]=0;
아래와 같이 편하게 처리할 수 있다.
for(i=0;i<5;i++)
score[i]=0;
5.배열의 초기화
int score[5]={10,20,30,40,50}; //각각의 변수들의 초기값을 콤마로 분리하여 중괄호 안에 나타냄
int score[5]={10,20,30}; //나머지 변수 score[3],score[4] 는 자동으로 0으로 초기화가 됨
int score[]={10,20,30,40,50}; //배열의 크기가 주어지지 않아도 초기값의 개수가 배열의 크기가 됨
6.배열의 복사,비교
주소가 다르기 때문에 원소를 일일이 복사해야한다.
int a[size];
int b[size];
a=b; //컴파일 오류발생
int a[size];
int b[size];
int i;
for(i=0;i<size;i++)
a[i]=b[i]; /각각에 해당하는 index를 지정해서 복사해야한다.
7.배열의 함수 호출
->값에 의한 호출(call by value) = 값을 직접 넘겨 줌
->참조에 의한 호출(call by reference) = 주소를 넘겨주는 것(값을 넘겨주는게 아님)
int main(void)
{
int arr[5]={10,20,30,40,50};
...
init_array(arr,5) //호출시 배열이름(첫 주소)으로 호출함
...
}
void init_array(int array[],int n)
{
for(int i;i<n;i++)
array[i]=i; //변환된 값이 arr에 바로 반영이 됨
}
설명을 덧붙이면
init_array(arr, 5) 를 하면 함수 init_array를 실행하고 arr의 주소가 array에 전달되는것이다. (call by reference)
(만약 init_array(arr[ ],5) 라고 쓰면 값을 넘겨주는 call by value이다)
결국 주소를 호출했기때문에 array=arr=&arr[0] (주소) 가 되는것이다.
즉 array[0]=0일때 arr를 출력을 해보면 처음값인 10 이 아니라 0 이 나오게 된다는 것이다.