19

私はプログラマー初心者で、C についてはほとんど知りません。関数が配列を返せない理由は、知っていても説明していないことの 1 つです。これは、ポインターを使用するか、配列を a でラップすることで簡単に回避できます (関数から 2 次元配列を返すstruct)が、私の質問は「なぜですか?」です。

関数が配列を返せないのはなぜですか?

簡単な回避策があることは承知していますが、この質問を発見して以来、ずっと悩まされてきました。これは C の内部設計の欠陥ですか、それとも意図的に配置されたものですか? この制限が存在する特定の理由はありますか?

4

2 に答える 2

0

投機...

  • 配列は大きい (または少なくとも小さくない) ことが予想されるため、配列をコピーして「値の型」の動作を許可するには、かなりの時間がかかります。=配列をコピーすると、C の明示的な目標ではなかったコードに隠れた速度低下が生じることが予想されます。
  • C の配列にはサイズが含まれていません。言語に存在する「配列」の現在の概念の値としてコピーを実装する簡単な技術的方法はありません。
于 2013-01-25T01:26:41.467 に答える
0

よくわかりませんが、そう思います。

  1. Cは、メモリが制約されていたときに開発されました。
  2. 誰かが代替案を言ったかもしれません。完全な配列を返す代わりに、ポインターを返すことができるので、他のあまり良くない代替手段を提供する理由.
于 2013-01-25T01:29:17.907 に答える