title: Passing string through a function (C programming)
body: <p>I have just started learning pointers, and after much adding and removing <code>*</code>s my code for converting an entered string to uppercase finally works..</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  char* upper(char *word);
  int main()
  {
      char word[100];
      printf("Enter a string: ");
      gets(word);
      printf("\nThe uppercase equivalent is: %s\n",upper(word));
      return 0;
  }
  
  char* upper(char *word)
  {
      int i;
      for (i=0;i&lt;strlen(word);i++) word[i]=(word[i]&gt;96&amp;&amp;word[i]&lt;123)?word[i]-32:word[i];
      return word;
  }
  </code></pre>
  
  <p>My question is, while calling the function I sent <code>word</code> which is a pointer itself, so in <code>char* upper(char *word)</code> why do I need to use <code>*word</code>?  </p>
  
  <p>Is it a pointer to a pointer? Also, is there a <code>char*</code> there because it returns a pointer to a character/string right?<br>
  Please clarify me regarding how this works.</p>