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;
}