私はCの関数を書くことが優れているスタイル混乱しています:C - 結果を関数に返すか、引数ポインタが指し示す変数に保存する必要がありますか?
int function()
{
/*code block*/
return result;
}
または
個人的にvoid function(int *result)
{
/*code block*/
}
、私は最初のものは、明確に(とJavaスタイルのような)であると思いますが、私はCのいくつかの関数がgets()
,shmget()
のように2番目のスタイルとして宣言されていて、アルゴリズムコースの教師がcreate_Queue(Queue *q)
のような2番目のスタイルの宣言を書いてくれると助言しています。私はそれに従うべきです。
あなたの質問は、このサイトに基づいてあまりにも多くの意見です。ちょうど注意してください:考慮すべき他のものがあります。 'queue_create'がオブジェクトを割り当てると、私は個人的にオブジェクトを返す方が良いと思います(図のように、オブジェクトへのポインタでオブジェクトを返すことはできません)。さもなければ、よい設計のために考慮する他の事がある。戻り値が「自然」である場合は、それが好ましいはずです。 'fgets'のためには機能しません(**決して**使用することはありません!先生があなたに使用するように言ったら、Cを学ぶべきです)。 – Olaf
それは文脈によってまったく異なります。どちらも他のものより優れていません。 –
最初のものは 'result = function();'のような直接指定に使うことができ、もう1つは 'function'を呼び出す前に' result'を宣言して定義する必要があります。 JavaとCを比較しないでください。それらは、異なる利点と欠点を持つ2つの異なる世界から来ています。 –