본문 바로가기

C-Language/Arrays

Arrays in C Language

C 언어에서 배열 사용하기



배열 선언, 초기화, 함수 파라미터에 배열 전달하기, 함수가 배열을 생성하여 리턴하는 예


#include <stdio.h>

void printSum(int[], int size);
void printPtr(int *a, int size);
void printMulti(int a[][2], int size);
int * createArr();

int main()
{
	int a[5];  // 배열의 선언

	a[0] = 1;  // 초기화
	a[1] = 3;
	a[2] = 5;
	a[3] = 7;
	a[4] = 9;

	printf("a[0]=%d \n", a[0]);  // 배열의 사용

	int b[3] = { 10,20,30 }; // 배열의 선언 및 초기화를 동시에
	printf("b[1]=%d \n", b[1]);

	int c[] = { 5, 10, 15 };  // 배열의 크기를 지정하지 않은 경우
	printf("c[2]=%d \n", c[2]);

	int point[3][2] = { {0,1},{2,3},{4,5} }; // 2차원 배열
	printf("point[1][2]=%d \n", point[1][1]);

	printSum(c, 3);
	printPtr(c, 3);
	printMulti(point, 3);

	int *d = createArr();
	printf("%d, %d, %d \n", d[0], d[1], d[2]);

	return 0;
}

// 함수의 파라미터에 배열을 받아서 배열의 원소를 합산하여 출력하는 예
void printSum(int a[], int size)
{
	int sum = 0;
	int i = 0;
	for (i = 0; i < size; i++)
	{
		sum += a[i];
	}
	printf("배열원소 합산결과=%d \n", sum);
}

// 배열을 파라미터로 받을 때 포인터 변수를 사용하는 예
void printPtr(int *a, int size)
{
	int sum = 0;
	int i = 0;
	for (i = 0; i < size; i++)
	{
		sum += a[i];
	}
	printf("배열원소 합산결과=%d \n", sum);
}

// 2차원 배열을 파라미터로 받는 함수의 예
void printMulti(int a[][2], int size)
{
	printf("%d \n", a[1][1]);
}

// 배열을 리턴하는 함수
int * createArr()
{
	int a[3] = { 3,2,1 };
	return a;
}



배열을 포인터로 다루는 방법


배열변수는 배열의 첫번째 원소의 값을 가리키는 포인터 상수이다 (constant pointer to the first element of the array)

#include <stdio.h>

int main()
{
	int a[3];  // 배열의 선언
	int *p;

	a[0] = 1;  // 초기화
	a[1] = 3;
	a[2] = 5;

	// 배열변수는 포인터 상수이다. 즉, 배열변수 안에는 첫번째 원소의 주소가 저장되어 있다
	// 메모리의 주소를 이용(포인터 연산)하여 바로 인접한 메모리 영역으로 이동할 수 있다
	int i;
	for (i = 0; i < 3; i++)
	{
		printf("%d ", *(a + i));
	}

	printf("\n\n");

	p = a; // 배열변수는 첫번째 원소의 값을 가리키는 포인터 상수이다

	// 포인터변수는 포인터연산을 통해 인접한 방의 값을 참조할 수 있다
	printf("%d %d %d \n", *p, *(p + 1), *(p + 2));
	printf("\n");

	for (i = 0; i < 3; i++)
	{
		printf("%d ", *(p + i));
	}
	printf("\n\n");

	return 0;
}