title: Why do char functions require becoming a pointer when returning a string?
body: <p>I am a beginner C programmer and I am having difficulties grasping the concept of pointers. My question is why does the program require <code>char *lowercase</code> to run normally and why, if I remove the <code>*</code>, it breaks the program?</p>
  <pre><code>char *lowercase(char a[]){
  int c = 0;
  char *lowercase_string = malloc(300);
  strcpy(lowercase_string,a);
  while (lowercase_string[c] != '\0') {
      if( lowercase_string[c] &gt;= 'A' &amp;&amp; lowercase_string[c] &lt;= 'Z' ){
          lowercase_string[c] = lowercase_string[c]+32;
      }
      c++;
   }
   return lowercase_string;
   } 
  </code></pre>