Comentario d codigo

sera q alguem podia dar uma ajudinha para comentar esse codigo…

[code]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct cliente
{
       char nome[50];
       char endereco[100];
       int cpf;
       int fone;
       struct cliente *prox;
} DadoCliente;


void insere_ordenado(DadoCliente **cabeca_cliente);

void insere_ordenado(DadoCliente **cabeca_cliente)
{  
 
   char aux[50];
   int num;  
   char endereco[100];
   int cpf;
   int fone;

   printf("CPF: ");   
   scanf("%d%*c",&num);
   int achou = 0;

  
   DadoCliente *novo = malloc(sizeof(DadoCliente));
   DadoCliente *ant = NULL; 
   DadoCliente *p = *cabeca_cliente; 

   while( p != NULL )
   {   
      if (p->cpf == num)
      {
         printf("CPF %d ja cadastrado!!\n nao inserido!!",num );
         achou = 1;
         p = NULL ;
      }
      else
      {
         ant = p;
         p = p->prox;                            
      }
   } 
          
   if ( achou != 1 )
   {
      novo->cpf = num;
      printf("Nome: ");
      scanf("%49[^\n]",aux);    
      strcpy(novo->nome, aux);          
      printf("Telefone: ");   
      scanf("%d%*c",&fone);
      novo-> fone = fone; 
      printf("Endereco: ");
      scanf("%99[^\n]",endereco);
      strcpy(novo->endereco, endereco);  
      ant = NULL;
      p = *cabeca_cliente;   
      while( p != NULL )
      {    
         if ( strcmp(p->nome, aux) < 0 || strcmp(p->nome, aux)== 0)
         {
            ant = p;
            p = p->prox;               
         }
         else if ( strcmp(p->nome, aux) > 0 )
         {
            p = NULL; 
         } 
      }
      if (ant == NULL)  
      {
         novo->prox = *cabeca_cliente;
         *cabeca_cliente = novo;           
      }
      else 
      {
         novo->prox = ant->prox;
         ant->prox = novo;
      } 
   }
}
[/code]

Outro… pô cara, vai querer que a pessoa entenda o código para depois comentar ele? Qual a dificuldade nisso. Tem que aprender a fazer isso…

a maior dificuldade em comentario é nessa parte
void insere_ordenado(DadoCliente **cabeca_cliente) .
ponteiro de ponteiro.
porque nesse procedimento foi passado a(DadoCliente **cabeca_cliente)???
essa é a maior duvida, mandei todo o codigo pra pessoa da uma olhada geral

Só uma perguntinha…
Foi vc que fez esse código?
E da proxima vez use:

Para poder ficar melhor de entender seu código.
Q olhando assim fica complicado te ajudar.

Mas este código por sí ja está comentado! Se sua dúvida é nos métodos do C, basta usar o google e procurar o que faz cada um. Mas as variaveis estão auto-explicativas.

void insere_ordenado(DadoCliente **cabeca_cliente) 

cabeca_cliente foi passada como ponteiro para ponteiro, pois todas as modificações realizadas na variavel nesta função serão visiveis fora do escorpo da função de ordenação, isto é, se vc chamou a função na main e a cabeca_cliente->prox estiver apontando para o endereço ox2F de memoria e de dento da função for modificado para 0xFF quando sair da função e cabeca_cliente->prox valerá 0xFF.

Entendeu?