Olá todos,  
Sei que o objetivo do código abaixo é para criar combinações numéricas, pois utilizo para gerar combinações de códigos de botões numa máquina, mas tenho curiosidade de saber como funciona.  :)   
Segue o código:   
#include<stdio.h>
#include<stdlib.h>
 
int main(void)
{
   int *variavel, ponteiro, limite_inf, limite_sup, limite, n, i;
   FILE *arquivo;
 
   arquivo = fopen("combinacoes.txt", "wt");
 
   printf("Entre com o limite inferior e o limite superior:");
   scanf("%d %d", &limite_inf, &limite_sup);
 
   printf("Entre com a quantidade de elementos a serem combinados por vez:");
   scanf("%d", &n);
 
   variavel = (int *)malloc(n*sizeof(int));
 
   for(i = 0; i < n; i++)
      variavel = limite_inf+i;
 
   ponteiro = n;
   while(variavel[0] <= limite_sup-n+1)
   {
      for(i = 0; i < n-1; i++)
         fprintf(arquivo, "%d ", variavel);
      fprintf(arquivo, "%d\n", variavel[n-1]);
 
      while(ponteiro != 0 && (variavel[ponteiro-1] == limite_sup-(n-ponteiro)))
         ponteiro--;
 
      if(ponteiro == 0)
         ponteiro = 1;
      variavel[ponteiro-1]++;
      for(i = ponteiro; i < n; i++)
         variavel = variavel[i-1]+1;
      ponteiro = n;
 
   }
 
   free(variavel);
   fclose(arquivo);
 
   return 0;
}