배열은 같은 종류의 데이터를 효율적으로 관리하고 처리 할 수 있는 역할을 한다.

a라은 배열이 있다면

a[0] a[1] a[2] 식으로 배열이 형성된다

배열 선언은

자료형 배열이름 배열크기 이다

int array [3]

위 배열은 array[0] array [1] array [2] 를 갖는다. 0부터 시작함에 유의하라

#include<stdio.h>
#define students 5 //학생의 수
int main() {
	int scores[students]; //scores 배열 선언
	int average, sum = 0;
	for (int i = 0; i < students; i++)
	{
		puts("학생들의 성적을 입력하세요");
		scanf("%d", &scores[i]); //scores[i]에 입력
	}
	for (int i = 0; i < students; i++)
		sum += scores[i]; //scores[i]의 성적을 모두 더한다
	average = sum / students;
	printf("성적 합계 = %d\n", sum);
	printf("성적 평균 = %d\n", average);
}

위 예제는 scores [5]를 선언한 후 반복문으로 배열을 입력받은 후 모두 더하고 있다

아래는 배열의 초기화 예제이다

#include<stdio.h>
int main() {
	int scores[5] = { 10,12,13 };
	for (int i = 0; i < 5; i++)
		printf("scores[%d]=%d\n", i, scores[i]);
}

int scores [5]={10,12,13}

{} 중괄호 안의 숫자 순서대로 배열의 0번째부터 초기화된다. 즉 위의 초기화로

scores[0]=10

scores[1]=12

scores[2]=13

scores[3]=0

scores[4]=0

0부터 시작함에 유의하라, 초기화에 없는 배열은 0으로 초기화된다.

#include<stdio.h>
int main() {
	int a[5] = { 0 }; //배열 0부터 4까지 0으로 초기화
	int b[5] = { 0,0,1 }; //배열 0 부터 0 0 1로 초기화 후 나머지는 0
	for (int i = 0; i < 5; i++)
	{
		printf("배열 a[%d] 과 b[%d]는 ", i, i);
		if (a[i] == b[i])
			puts("같습니다");
		else
			puts("다릅니다");
	}
	printf("전체 배열은 ");
	if (a == b) //a와 b전체 배열 비교
		puts("같습니다");
	else
		puts("다릅니다");
}
#include<stdio.h>
#include<stdlib.h>
#define SIZE 6 
int main() {
	srand(time(NULL));
	int freq[SIZE] = { 0 }; //freq[6]을 초기화
	for (int i = 0; i < 10000; i++)
		++freq[rand() % 6]; //freq[] 0부터 6까지의 랜덤 배열에 1을 추가한다
	puts("==============");
	puts("면 빈도");
	puts("==============");
	for (int i = 0; i < SIZE; i++)
		printf("%3d %3d \n", i + 1, freq[i]);
}

아래 소스는 함수 내의 배열을 변경하면 원본 함수가 변경되는 함수이다.

사실 함수로 배열을 입력받으면 배열은 주소로 입력받게 되고 변경된 배열이 곧 원본 배열이 된다.

#include<stdio.h>
#define SIZE 7
void modify_array(int a[], int size);
void print_array(int a[], int size);
int main() {
	const int list[SIZE] = { 1,2,3,4,5,6,7 };
	print_array(list, SIZE); //배열 출력
	modify_array(list, SIZE); //배열 수정
	print_array(list, SIZE); //배열 출력
	for (int i = 0; i < 7; i++) //배열 출력
		printf("%d", list[i]);
}
void modify_array(int a[], int size) {
	for (int i = 0; i < size; i++)
	{
		++a[i];
	}
}
void print_array(int a[], int size) {
	for (int i = 0; i < size; i++)
	{
		printf("%d", a[i]);
	}
	puts("");
}

배열은 함수로 입력 받을때 주소로 입력받기 때문에 배열이 변경되면 원본 배열이 변경된다

나중에 배울 포인터에서 이 부분은 한번 더 설명하겠다

카테고리:

업데이트: