배열

이지우·2022년 9월 28일
0

C언어

목록 보기
7/17

배열은 동일한 타입의 메모리를 하나의 단위로 다루기 위해 연결된 메모리이다.

1차원 배열 선언

배열 선언 시 상수로 할당 크기를 정해야 한다.

int n[10]; 
// int형 10개짜리 메모리 공간 선언 (비어 있는 상태)
double d[] = {0.1, 0.2, 0.5, 3.9}; 
// 자동으로 크기가 4로 정해짐 (선언과 동시에 초기화)

배열 각 원소는 배열 이름과 [ ] 안에 인덱스를 적어 접근 가능하다.

n[5] = 20;	// 배열 n의 5번 자리가 20으로 초기화됨
// 5번 자리 = 6번째 칸
d[-1] = 9.9;	// 인덱스는 음수 사용 불가

2차원 배열 선언

2차원 배열은 행과 열을 가진 배열이다.
1차원 배열을 여러개 쌓아 둔 모양이라고 생각하면 편하다.

int m[2][5];	// 2행 5열의 2차원 배열 선언
// 크기가 5인 배열 2개를 쌓아둔 모양

매개 변수로 배열을 전달하는 함수

다음은 매개 변수로 배열을 전달받아 배열의 합을 구하는 함수 addArray()이다.

int addArray(int a[], int size) {
	// 전달받은 배열 a의 값 중 size 만큼을 더한 값 구하기
}

함수 호출

int n[5] = { 1, 2, 3, 4, 5 };
int sum = addArray(n, 5);	// 배열 n을 매개 변수로 전달
// -> sum = 배열 n의 값 중 인덱스 0~4만큼의 값의 합 

매개 변수 a는 배열 n을 가리킨다. (포인터 개념)

매개 변수 size는 전달 받은 값 5를 복사한다.

변수를 가리키는 것과 변수의 값을 복사하여 사용하는 것의 차이점은 포인터 내용에서 다루어 볼 예정

함수 예제 코드

#include <stdio.h>

int addArray(int a[], int size); // 함수의 원형 선언
void makeDouble(int a[], int size); // 함수의 원형 선언
void printArray(int a[], int size); // 함수의 원형 선언

int main() {
	int n[] = { 1,2,3,4,5 }; // int n[5]로 해도 됨
	int sum = addArray(n, 5); // 배열 n과 개수를 매개 변수에 전달
	
    printf("배열 n의 합은 %d입니다\n", sum);
	// 배열 n 값을 두 배로
    makeDouble(n, 5); // 배열 n과 개수 5를 매개 변수에 전달
    // 배열 n 출력
	printArray(n, 5); // 배열 n과 개수 5를 매개 변수에 전달
}

// 배열과 개수를 전달받아 합을 리턴하는 함수
int addArray(int a[], int size) { 
	int i, sum=0;
	for(i=0; i<size; i++)
		sum += a[i];
	return sum;
}

// 배열의 값을 두 배로 증가시키는 함수
void makeDouble(int a[], int size) { 
	int i;
	for(i=0; i<size; i++)
		a[i] *= 2; // 원소의 값을 2배 증가
}

// 배열을 출력하는 함수
void printArray(int a[], int size) { 
	int i;
	for(i=0; i<size; i++)
		printf("%d ", a[i]); // 원소 출력
	printf("\n");
profile
노력형 인간

0개의 댓글