JUST GO

[C] 배열 본문

C/학습내용

[C] 배열

root_go 2022. 10. 6. 09:07

배열

- 같은 데이터형의 변수를 메모리에 연속적으로 할당하고 같은 이름으로 사용하는 기능

- 배열의 원소(element)

- 배열 안에 들어가는 변수 하나하나

- 개별적인 변수인 것처럼 사용

- 인덱스(index)

- 배열의 각 원소를 구분하기 위한 번호

- 항상 0부터 시작한다.

- 배열의 모든 원소는 항상 연속된 메모리에 할당된다.

 


배열의 선언

 

배열의 크기

- 배열의 크기는 반드시 0보다 큰 정수형 상수로 지정해야 한다.

- 배열의 크기를 지정할 때 매크로 상수를 사용할 수 있다.

- const 변수는 변수이므로 배열의 크기를 지정할 때 사용할 수 없다.

- 배열 이름으로부터 배열의 크기(원소의 개수)를 구할 수 있다.

 

배열의 초기화

- { } 안에 배열 원소의 초기값을 콤마(,)로 나열한다.

- 배열의 0번째 원소부터 배열의 초기값이 나열된 순서대로 초기화한다.

- 초기값이 부족하면 나머지 원소는 0으로 초기화한다.

- 초기값을 원소의 개수보다 많으면 컴파일 에러가 발생한다.

- { } 안을 비워 두면 컴파일 에러가 발생한다.

- 초기값을 지정하지 않고 배열의 크기를 생략하면 컴파일 에러가 발생한다.

- 배열의 초기값을 지정하는 경우에는 배열의 크기를 생략할 수 있다.

 

가장 기본적인 배열의 초기화

#include <stdio.h>

int main()
{
	int arr[5] = { 1, 2, 3, 4, 5 };
	int i;

	printf("arr = ");
	for (i = 0; i < 5; i++)
		printf("%d ", arr[i]);
	printf("\n");

	return 0;
}
 

배열의 크기보다 초기값을 적게 지정하는 경우

//#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int amount[5] = { 1, 1, 5 }; // 1, 1, 5, 0, 0으로 초기화
	int price[5] = { 0 }; // 배열 전체를 0으로 초기
	int i;

	printf("amount = ");
	for (i = 0; i < 5; i++)
		printf("%d ", amount[i]);
	printf("\n");

	printf("price = ");
	for (i = 0; i < 5; i++)
		printf("%d ", price[i]);
	printf("\n");
	return 0;
}
 
 

배열 원소의 사용

- 배열의 각 원소에 접근하려면 인덱스 또는 첨자를 이용한다.

- 배열은 주로 for문과 함께 사용된다.

- 배열의 인덱스에는 변수나 변수를 포함한 수식을 사용할 수 있다.

 

배열의 원소가 변수로서 사용되는 경우

#define ARR_SIZE 5
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int add(int a, int b) { return a + b; }

int main(void)
{
	int arr[ARR_SIZE] = { 0 }; // 배열 전체를 0으로 초기화
	int i;

	arr[0] = 5;
	arr[1] = arr[0] + 10; // 배열의 원소를 수식에 이용
	arr[2] = add(arr[0], arr[1]); // 함수의 인자로 전달
	printf("정수를 2개 입력하세요: "); 
	scanf("%d %d", &arr[3], &arr[4]); // 배열의 원소로 입력

	for (i = 0; i < ARR_SIZE; i++)
		printf("%d ", arr[i]);
	printf("\n");
}

 

'C > 학습내용' 카테고리의 다른 글

[C] swap 함수  (0) 2022.10.07
[C] 포인터(2)  (0) 2022.10.06
[C] 함수  (0) 2022.10.06
[C] 반복문(2)  (1) 2022.10.05
[C] 반복문  (1) 2022.10.05