배열

Lucete_sw·2022년 8월 18일

C언어

목록 보기
4/8
post-thumbnail

|   배열 선언 및 초기화

  • 자료형 배열이름[크기];
  • 자료형 배열이름[] = { 값, 값, 값 };
  • 자료형 배열이름[크기] = { 값, 값, 값 };
  • 자료형 배열이름[크기] = { 0, };

-> 선언과 초기화를 동시에 진행할 때는 배열의 크기를 입력하지 않아도 된다.(위 2번의 경우)
-> 배열의 모든 요소를 간단하게 0으로 초기화한다.(위 4번의 경우)


 주의
배열을 선언하면서 값을 초기화할 때는 { } 안의 값 개수는 배열의 크기보다 작아도 되지만, 절대 크면 안 된다.
또한, { }를 사용하여 배열에 값을 할당하는 방법은 배열을 선언할 때만 사용할 수 있으며 이미 선언된 배열에는 아래와 같은 방법으로 값을 할당해야 한다.

int main()
{
	int arr[5];
	
    arr[0] = 3;
    arr[2] = 1;
    
    return 0;
}

배열에 값이 저장된 공간을 요소(element)라고 한다.
배열에서 각 요소에 접근하려면 배열 뒤에 [ ]를 사용하며 [ ] 안에 각 요소의 인덱스를 지정해주면 된다.

여기서 주의할 점은, 배열의 인덱스는 항상 0부터 시작한다는 점이다.
따라서 배열 arr의 첫 번째 요소는 arr[0]이 된다.


🤔 배열의 범위를 벗어난 인덱스에 접근하면 어떻게 될까?

 입력 

int main()
{
	int arr[5] = { 0, };
    
    printf("%d\n", arr[-1]);	// 잘못된 인덱스(음수)
    printf("%d\n", arr[5]);		// 배열의 범위를 벗어난 인덱스
}

 출력 

-858993460	(쓰레기 값)
13651968	(쓰레기 값)

배열의 요소에 접근할 때 인덱스로 음수를 지정하거나, 배열의 크기를 벗어난 인덱스를 지정해도 컴파일 에러가 발생하지 않는다.
하지만 실행을 해 보면 쓰레기 값이 출력된다.

즉, 배열의 범위를 벗어난 인덱스에 접근하면 배열이 아닌 다른 메모리 공간에 접근하게 된다.



|  2진수를 10진수로 변환하기


 입력 

#include <stdio.h>

int main()
{
	int decimal = 0;
    int binary[4] = { 1, 1, 0, 1 };
    int position = 0;
    
    for (int i = sizeof(binary) / sizeof(int) - 1; i >= 0; i--)
    {
    	if (binary[i] == 1)
        	decimal += 1 << position;	// 비트 연산자가 우선됨.
    	
        position++;
    }
    
    printf("%d\n", decimal);
    
    return 0;
}

 출력 

13


|  가장 작은 수 출력하기


 입력 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int numArr[5];
    int smallestNumber;
    
    scanf("%d %d %d %d %d", &numArr[0], &numArr[1], &numArr[2], &numArr[3], &numArr[4], &numArr[5]);
    
    smallestNumber = numArr[0];
    for (int i = 1; i < sizeof(numArr) / sizeof(int); i++)
    {
    	if (smallestNumber > numArr[i])
        	smallestNumber = numArr[i];
    }
    
    printf("%d\n", smallestNumber);
    
    return 0;
}


출처 : 남재윤, ⌜C언어 코딩 도장⌟, 길벗, 2021

profile
개발자_기록

0개의 댓글