본문 바로가기
c언어

c언어 배열 초기화, 복사, 비교하는 방법 알아보기

by 개발자 L 2022. 12. 6.
반응형

c언어 배열 초기화, 복사, 비교하는 방법 알아보기

네 안녕하세요, 이번 포스팅에서는 배열을 초기화, 복사, 비교하는 방법에 대하여 알아보도록 하겠습니다.

배열 역시도 우리가 변수를 초기화를 시켜주는 것처럼 초기화를 시킬 수 있습니다.

그리고 각각의 원소를 복사 및 비교도 할 수 있습니다.

그럼 지금부터 어떻게 하는 지 한 번 알아보도록 하겠습니다.

 

1. 배열의 초기화

배열은 변수처럼 그냥 선언을 하는 것이 아니라, 중괄호({})를 이용하여 초기화를 해야 합니다.

그 이유는 한 개만 초기화를 시키는 것이 아니라, 해당 배열 내에 있는 모든 데이터를 초기화를 해야 하기 때문에 그렇ㄱ ㅔ해야만 합니다.

그리고 정석적인 c언어 작성 요령 역시 본인이 선언한 모든 배열에 대하여 초기값을 설정을 해줘야 한다는 것이 원칙입니다.

그리고 배열의 초기값 선언은 이러한 규칙을 가지고 있습니다.

// 배열의 크기는 설정이 되어있지만, 초기값이 없는 경우 - 모두 0으로 초기화
int A[5] = {}; // 모든 값이 0으로 초기화

// 배열의 크기가 설정이 되어있고, 배열의 크기보다 적은 개수로 초기값을 설정했을 경우 - 나머지는 0으로 초기화
int A[5] = {1, 2, 3}; // 나머지 2개는 0으로 초기화

// 배열의 크기가 설정이 되어있고, 초기값을 넣는 자리에 0을 넣은 경우 - 모든 값이 0으로 초기화
int A[5] = {0}; // 모든 값이 0으로 초기화

// 배열의 크기를 설정하지 않고, 초기값들만 적어둔 경우 - 초기값의 개수만큼 컴파일러가 배열의 크기 설정
int A[] = {1, 2, 3, 4, 5}; // 배열의 크기는 5가 됨.

// 배열의 크기가 설정이 되어있고, 초기값도 모두 설정이 되어있는 경우 - 정석적인 배열 설정
int A[5] = {1, 2, 3, 4, 5} // 정석적인 배열 설정 방법

// 배열의 크기만 선언이 되어있고, 초기값이 설정이 되어있지 않은 경우 - 쓰레기값이 들어감
int A[5]; // 배열의 값이 초기화가 되어있지 않으므로 쓰레기값이 들어감.

// 배열의 크기도 없고, 초기화도 되어있지 않은 경우 - 쓰레기값이 들어감
int A[] = {}; 쓰레기값이 들어감

이러한 규칙을 가지고 있습니다.

반응형

 

2. 배열의 복사

배열도 변수처럼 복사가 가능합니다.

배열의 복사는 for문을 써서 복사를 합니다.

이렇게 쓸 수 있습니다.

#include <stdio.h>

#define SIZE 5
 
int main()
{
    int a[SIZE] = { 1, 2, 3, 4, 5 };
    int b[SIZE];
    int i;
 
    for (i = 0; i < SIZE; i++)
    {
        b[i] = a[i];
    }
    
    for (i = 0; i < SIZE ; i++) 
    {
        printf("a[%d] = %d  b[%d] = %d\n", i, a[i], i, b[i]);
    }

    return 0;
}

이렇게 씁니다.

그럼 결과는 어떻게 나오는지 한 번 보도록 하겠습니다.

a[0] = 1  b[0] = 1
a[1] = 2  b[1] = 2
a[2] = 3  b[2] = 3
a[3] = 4  b[3] = 4
a[4] = 5  b[4] = 5

이렇게 잘 나왔음을 볼 수가 있습니다.

그리고 한 가지 주의사항으로는 배열의 요소는 한 번에 하나씩 복사를 해야 합니다.

한 번에 모든 배열을 복사를 하고 싶다면 사용자 정의 함수를 만드는 방법이 있는데,

이를 이용하는 방법은 난이도가 있기 때문에 나중에 제가 따로 다루도록 하겠습니다.

 

3. 배열의 비교

배열 역시 크기가 다르기 때문에 비교가 가능합니다.

그리고 이 역시도 for문을 이용을 하는데,

그 안에 if문을 넣어서 작성을 합니다.

그럼 바로 보여드리도록 하겠습니다.

#include <stdio.h>

#define SIZE 5
 
int main()
{
    int a[SIZE] = {1, 2, 3, 4, 5};
    int b[SIZE] = {1, 2, 3, 4, 5};
    int i;
 
    for (i = 0; i < SIZE; i++)
        {
            if(a[i] != b[i])
            {
                printf(("다릅니다.\n"));
                break;
            }

            else
            {
                printf("같습니다.\n");
                break;
            }
        }

    return 0;
}

이렇게 작성을 했습니다.

그럼 결과는 어떻게 나오는지 한 번 보도록 하겠습니다.

같습니다.

배열을 같게 했을 경우를 작성을 했는데, 같다고 뜹니다.

그럼 다르게 했을 경우를 한 번 작성을 해보겠습니다.

#include <stdio.h>

#define SIZE 5
 
int main()
{
    int a[SIZE] = {1, 2, 3, 4, 5};
    int b[3] = {3, 4, 5};
    int i;
 
    for (i = 0; i < SIZE; i++)
        {
            if(a[i] != b[i])
            {
                printf(("다릅니다.\n"));
                break;
            }

            else
            {
                printf("같습니다.\n");
                break;
            }
        }

    return 0;
}

이렇게 했을 경우에는 어떻게 나오는지 한 번 보도록 하겠습니다.

다릅니다.

결과가 잘 나오는 것을 볼 수가 있습니다.

하지만, 배열의 이름만 가지고서는 비교를 하는 것이 정확치가 않습니다.

그래서 나중에 제가 사용자 정의 함수를 이용하여 비교를 하는 것을 다뤄보도록 하겠습니다.

 

여기까지 배열을 초기화, 복사, 비교하는 방법에 대하여 알아보았는데요,

다음 포스팅에서는 배열을 함수로 전달하는 방법에 대하여 알아보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~

반응형

댓글