C言語では関数内で宣言した配列変数を素直にreturnする方法がありません。 知らないとこんなコードを書きがちですが、 この書き方では関数内で積まれたスタックがリターン時に解放されてしまうので、 返したアドレスが無効になってしまって、たまたま動くこともありますが、 最悪セグメンテーションフォールトになっちゃいます。 とあるパスの前のパスを返す get_directory()というのを考えてみます。 例) 例えば渡されたパスが/home/user1/hoge.txtだとすると/home/user1/というのを返す場合を考えてみます。 例1 ダメな例 コンパイル $ gcc -o string1.exe string1.c retarr.c: 関数 ‘get_directory’ 内: retarr.c:18:5: 警告: 関数が局所変数のアドレスを返します [-Wreturn-local-a
![関数内で宣言した配列変数をreturnしてはいけない - Gobble up pudding](https://cdn-ak-scissors.b.st-hatena.com/image/square/efdf7e0c8528f429b94e744f6db662f8e62b1f9c/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ff%2Ffa11enprince%2F20150719%2F20150719065534.jpg)