IT/솔루션) 난 정말C... 없다구요

25장. 함수 중심의 포인터 활용, 메모리의 동적 할당) 문제 25-2 [문제 24-5 다시 풀기]

돔찌 2019. 4. 18. 18:23

<2016. 9. 26. 21:20>

25장. 함수 중심의 포인터 활용, 메모리의 동적 할당) 문제 25-2 [문제 24-5 다시 풀기]

 

/*
typedef의 다양한 선언 방식을 통해 문제 24-5를 다시 풀어보자.
가장 문제가 되었던 것은 2차원 배열의 주소 값을 반환하는 함수의 정의 방법이었는데,
typedef 선언을 이용하면 2차원 배열의 주소 값에 해당하는 반환형을 정의하는 것이 가능하다.
*/
#include<stdio.h>
#include<stdlib.h>
typedef int(*inarr3)[3];
// int CompareArr(int(*arr1)[3], int(*arr2)[3]);
int CompareArr(inarr3 arr1, inarr3 arr2);
int main(void) {
	int arr1[3][3] = { {
			3,2,1
		}
		, {
			6,7,2
		}
		, {
			5,1,9
		}
	}
	;
	int arr2[3][3] = { {
			1,2,3
		}
		, {
			4,5,6
		}
		, {
			7,8,9
		}
	}
	;
	inarr3 resultarr;
	int i, j;
	resultarr = CompareArr(arr1, arr2);
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 3; j++) {
			printf("%4d", resultarr[i][j]);
		}
		printf("\n");
	}
	system("pause");
	return 0;
}
int CompareArr(inarr3 arr1, inarr3 arr2) {
	int i, j;
	int sum1 = 0, sum2 = 0;
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 3; j++) {
			sum1 += arr1[i][j];
		}
	}
	printf("arr1의 총합은 %d \n", sum1);
	for (i = 0; i < 3; i++) {
		for (j = 0; j < 3; j++) {
			sum2 += arr2[i][j];
		}
	}
	printf("arr2의 총합은 %d \n", sum2);
	if (sum1 >= sum2)
	  return arr1; else
	  return arr2;
}