title: Trouble with a pointer not being initialized
body: <p>I'm trying to make a program that asks for a users name and the amount of money they owe to the company. The problem is, every time I try to compile the program I get this warning saying that "user may not be initialized." I'm not quite sure what that means. Any help to out what I'm doing wrong? Thanks!</p>
  
  <pre><code>#define END  '\0'        
  #define LENGTH 20          
  
  struct info
  {
     char  lastName[LENGTH]; 
     float payment;
  };
  
  int customerS();
  void accounts(struct info *userStart, int amount);
  void changeNames(struct info *userStart, int amount);
  void sort(struct info *userStart, int amount);
  void results(struct info *userStart, int amount);
  
  int main()
  {
     struct info *user;
     int amount;
  
      while((amount = customers()) != 0)
     {
  
        accounts(user, amount);
        changeNames(user, amount);
        sortNames(user, amount);
        results(user, amount);
        free(user);
     }
  
     return 0;
  }
  
  int customers()
  {
     int choice;
  
     do
     {      
        printf("\nHow many customers do you have (2 to 300, 0=quit): ",
        scanf("%d", &amp;choice);
     }
     while((choice &lt; 2|| choice &gt; 300) &amp;&amp; choice != 0);
  return choice;
  }
  
  void accounts(struct info *userStart, int amount)
  {
     struct info *user;
     char   *name[LENGTH];
     float  owed;
  
     for(user = userStart; (user - userStart) &lt; amount; user++)
     {
        scanf (" %s", name[LENGTH]);
        getchar();
        do
        {
           name[LENGTH] = getchar();
           name[LENGTH]++;
        }
        while(!('\n'));
        user-&gt;lastName[LENGTH + 1] = END;
        scanf("%f", &amp;owed);
        user-&gt;payment = owed;
     }
     return;
  }
  
  void changeNames(struct info *userStart, int amount)
  {
     char *fast = &amp;userStart-&gt;lastName[LENGTH],
          *slow = &amp;userStart-&gt;lastName[LENGTH];
  
     if(tolower(*fast))
        *slow++ = toupper(*fast);       
     while(*fast != END)
     {
        if(!isspace(*fast) || isalpha(*fast))
           *slow++ = tolower(*fast);
        fast++;
     }
     *slow = END;
     return;
  }
  
  void sort(struct info *userStart, int amount)
  {
     struct info *user;
     char *in,
          *out,
          temp;
  
     for(out = user-&gt;lastName; (out - userStart-&gt;lastName) &lt; amount; out++)
     {
        for(in = out + 1; (in - userStart-&gt;lastName) &lt; amount; in++)
        {
           if(strcmp(user-&gt;lastName, userStart-&gt;lastName))
           {
              temp = *out;
              *out = *in;
              *in = temp;
           }
        }
     }
     return;
  }
  void results(struct info *userStart, int amount)
  {
     struct info *user;
     printf("\nName: %s        Payment: $%.2f", user-&gt;lastName,  user-&gt;payment);
     return;
  }
  </code></pre>