#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);
메모리를 사용하고 반납하는 습관을 가지자