title: "address of stack memory associated with local variable" error when running user-defined function in C
body: <p>Recentely I've been taking the CS50 2020 course from Harvard University as an introduction to C programming. I'm not very experienced with the language or with coding as a whole, so I'm struggling a bit to figure out what is wrong with my code.</p>
  
  <p>I wrote this little function which is suposed to take in a string and, by calling another function, encrypt the text using a Caesar cypher, then return it as a string. Problem is, I can't figure out how to return the character array as a string. I tried adding a NUL char at the end of the array after reading a bit about the problem, and it compiled alright, but when I ran the program I got the following error message:</p>
  
  <pre><code>error: address of stack memory associated with local variable 'result' returned [-Werror,-Wreturn-stack-address]
      return result;
             ^~~~~~
  </code></pre>
  
  <p>My code:</p>
  
  <pre><code>string encypher(string text)
  {
      int length = strlen(text);
      char result[length];
      for(int i = 0; i &lt; length; i++)
      {
          int letter_c = test_char(text[i]);
          result[i] = (char)letter_c;
      }
      result[length + 1] = '\0';
      return result;
  }
  </code></pre>