#include <stdio.h>
#include <stdlib.h>
int c_h(int k, int n)
{
if (n == 1)
return 1;
if (k == 0)
return n;
return (c_h(k - 1, n) + c_h(k, n - 1));
}
int main()
{
int T, cnt = 0;
// int *k = (int *)malloc(sizeof(int));
// int *n = (int *)malloc(sizeof(int));
scanf("%d", &T);
int *k = (int *)malloc(sizeof(int) * T);
int *n = (int *)malloc(sizeof(int) * T);
for (int i = 0; i < T; i++)
{
scanf("%d", k + i);
scanf("%d", n + i);
}
printf("\n\n\n");
for (int i = 0; i < T; i++)
{
// printf("%d\n", c_h(*(k + i), *(n + i)));
printf("%d\n", c_h(*k + i, *n + i));
}
}
printf("%d\n", c_h(*(k + i), *(n + i)));
printf("%d\n", c_h(*k + i, *n + i));
이 부분이 이해가 되지 않는다.
*(k + i)
랑 *k + i
의 차이점은 무엇일까
전자는 다음 주소의 값이고
후자는 주소가 가리키는 값에 +i 한 값을 보낸다 그래서 c_h가 호출하고 return 될 때 생각보다 큰 값이 return 되는 것
int *k = (int *)malloc(sizeof(int));
int *n = (int *)malloc(sizeof(int));
여기서 sizeof(int)
만이 아니라 sizeof(int)*T
를 해줘야 내가 원하는 만큼 할당할 수 있다.
free(k);
free(n);
메모리를 사용하고 반납하는 습관을 가지자