시작은 미약하였으나 , 그 끝은 창대하리라

제6강 배열 본문

프로그래밍/C언어

제6강 배열

애플파ol 2022. 1. 7. 17:21

목차:

*배열의 개념

*배열의 선언과 초기화

*일차월 배열

*다차원 배열

 

 

 

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 이 나오게 된다는 것이다.

  

'프로그래밍 > C언어' 카테고리의 다른 글

제8강 문자열  (0) 2022.02.10
제7강 포인터  (0) 2022.02.10
Comments