반응형

보통 C언어 연습시 함수에 전달인자로 일반 변수를 사용했지만, 이번엔 배열을 전달한다.

배열이름 아래 예를 들면 arr1[] 에서, arr1 자체는 포인터이다. 즉 arr1을 출력하면 해당 배열값들이 시작하는 곳에 대한 주소를 가리키고 있다.

 

그래서 배열을 함수 인자로 받을 때 자료형을 포인터로 써야 한다. 아래와 같이 int* param

 

아래 예시는 배열을 함수의 인자로 받아서 그 배열을 출력하는 예제이다.

#include <stdio.h>

/*
	배열을 함수의 인자로 전달.
	참고사항,
		배열내부 index 갯수를 구하는 방법
		-> sizeof(arr1)/sizeof(int)   이런식으로 구하면 된다.
*/

// 배열인자를 받아 배열 내부를 표시해주는 함수 (포인터를 이용)
void ShowArayElem(int* param, int len)
{
	int i;
	for (i = 0; i < len; i++)
		printf("%d ", param[i]);
	printf("\n");
}

int main()
{
	int arr1[3] = { 1,2,3 };
	int arr2[5] = { 4,5,6,7,8 };

	//	배열내부의 index 갯수를 구하는 방법.
	ShowArayElem(arr1, sizeof(arr1) / sizeof(int));
	ShowArayElem(arr2, sizeof(arr2) / sizeof(int));

	return 0;
}

배열 주소와 해당 배열의 사이즈를 인자로 받아서 출력 테스트

 

반응형

 

그러나 배열을 함수에 전달하는 방법은 아래와 같이 쓸 수도 있다. (위와 동일한 기능)

즉 포인터 (* param) 이 아닌, param[ ] 이러한 형태로 배열을 전달 할 수 있다는 것이다.

이는 둘다 동일한 뜻이며, param[ ] 로 작성하면, 코드를 읽는 사람이 "아~ 배열을 전달하구나~"하며 좀 더 가독성을 향상시킬 수 있다.

#include <stdio.h>

/*
	배열을 함수의 인자로 전달.
	참고사항,
		배열내부 index 갯수를 구하는 방법
		-> sizeof(arr1)/sizeof(int)   이런식으로 구하면 된다.
*/

// 배열을 인자로 받는 다른 방법.
// 인자로 배열을 전달 받는다는 느낌을 강하게 어필하기 위해.
void ShowArayElem(int param[], int len)
{
	int i;
	for (i = 0; i < len; i++)
		printf("%d ", param[i]);
	printf("\n");
}

int main()
{
	int arr1[3] = { 1,2,3 };
	int arr2[5] = { 4,5,6,7,8 };

	//	배열내부의 index 갯수를 구하는 방법.
	ShowArayElem(arr1, sizeof(arr1) / sizeof(int));
	ShowArayElem(arr2, sizeof(arr2) / sizeof(int));

	return 0;
}
반응형

+ Recent posts