タイトルの通りの質問内容です。
僕が調べた限りは「同じ」と言う意見が多数でした。
中には

・参照渡しした引数の関数通過後の結果が戻り値、
 関数自体が返すのが返り値

とか

・引数なしの関数で戻るのが戻り値、引数ありの関数で
 戻るのが返り値

とかはたまたその逆とか、混沌としています。

気になります。

A 回答 (3件)

同じものだと考えて結構でしょう。

所詮両方とも英語の "return value" の訳語ですから。
    • good
    • 0
この回答へのお礼

ありがとうございます。
「外来語」言い換え提案
http://www.kokken.go.jp/public/gairaigo/Teian1/i …
の第2回で取り上げて欲しいものです(笑)。

お礼日時:2003/04/28 13:09

私も同じだと思います。

あと、戻り値の方が一般的なように思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
返り値、ってなんとなくM$が好む言い回しっぽいイメージですね。

お礼日時:2003/04/28 13:07

同じと考えていいのではないでしょうか?


違うものだと言っている人たちの説は、自己ルールだと思います。
もしくは、どこかでそういう説明を見て知ったかぶりしてる人か。
    • good
    • 0
この回答へのお礼

ありがとうございます。
実は僕はずっと

関数自体が返す = 返り値
ポインタ渡し引数の値 = 戻り値

だと思ってました。
どこでそんな知識をつけたのやら・・・。

お礼日時:2003/04/28 13:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q値を返り値に返すのと参照渡しした引数に格納することの違い

プログラミングをしていて、次のような2種類の形式の関数をみることがあります。

void sum(int a, int b, int& c); //aとbの和をcに格納する
int sum(int a, int b); //aとbの和を返す

上の例のint &cは参照渡しされる引数という意味で、CやC++、PHPなどで同様です。

この、計算結果を参照渡しした引数に格納するのと、返り値に返すことの違いがよく分かりません。計算結果が複数ある場合は、前者の方が便利でしょう。しかし計算結果が1つだけなのに前者の方法を採っている関数も多く見かけます。個人的には、計算結果を返り値として返す後者の方法の方が感覚的に自然だと思うのですが、なぜ前者のような関数が存在するのか、教えていただきたく存じます。

Aベストアンサー

・複数の値を返したい

・↑の応用) 値とエラー等の情報を返したい
if ( MySqrt(a,b) ) { printf( "ERROR" ); } // a>0ならb=√a,戻り値0, a<=0ならbは無効で戻り値1

・戻り値として返すとパフォーマンスが悪い(C/C++の構造体等)
あるいは、関数内で変数に代入→戻ってきて呼出し側の変数に代入、というわずかな処理でも速くしたい。

・↑と関係して、同様の関数と引数の形を揃えた
構造体用が MyFunc1(a,b) / 数値用が b = MyFunc2(a) と見た目が変わらないように。

・戻り値の型を厳密に指定したい
double c = sum(a,b) ;等と暗黙の型変換をしないようにしたい。

・戻り値を返すサブルーチンが書けなかった言語からのなごり

以上、思いついたものを書いてみました。

QVBAの関数で引数渡しでエラー

関数呼び出しでObject型を渡したいのですが「引数の型が一致していません」との
エラーになってしまいます。
以下のプログラムをどのように修正すればよいのでしょうか?

Sub Test()
Dim obj As Object
Set obj = CreateObject("Scripting.Dictionary")
    :
  Sample(obj)
End Sub

Function Sample(obj As Object)
End Function

Aベストアンサー

文法エラーですね。

Sample(obj)
↓変更
Sample obj もしくは Call Sample(obj)

QDelphiでの関数の戻り値を別の型で複数に。

 どうお過ごしですか、ご主人様?
少し困っている事があるんですぅー。

Delphiで関数の戻り値を別の型で、複数にしたいのですが、どうしたらいいのでしょうか?
そもそもこういう場合は別の関数に分けた方がいいのでしょうか?
内容は数十行しかなく、まとめたい処理なんです。

グローバル変数は、なんかかっこ悪いので使いたくないし、クラスはまだよく分からないし。
あ、でもでも、普通は関数を分けるんでしょうか?
よろしくお願いします。

Aベストアンサー

変数引数(var宣言つきの引数)を使って、値を戻しては。
レコード型で返すという手もあります。

参考URL:http://info.borland.com/techpubs/delphi/delphi5/oplg/procfunc.html#7744

Qc言語 関数の引数に関数?他

初心者でつまずいてます。
ご存知の方教えていただけないでしょうか?
http://developer.apple.com/samplecode/PlayAudioFileLite/PlayAudioFileLite.html
のサンプルソースを見ているのですが

MyFileRenderProc宣言内の
err = AudioConverterFillComplexBuffer(converter, MyACComplexInputProc ,inInputDataProcUserData , &inNumFrames, ioData, outPacketDescription);
のMyACComplexInputProcと

setupCallbacks宣言内の
renderCallback->inputProc = MyFileRenderProc;
のMyFileRenderProc

はどういう状態なのでしょうか?
関数の戻り値が入るような気がするのですが
引数が記述されてないし,,,
よろしくお願いします。

初心者でつまずいてます。
ご存知の方教えていただけないでしょうか?
http://developer.apple.com/samplecode/PlayAudioFileLite/PlayAudioFileLite.html
のサンプルソースを見ているのですが

MyFileRenderProc宣言内の
err = AudioConverterFillComplexBuffer(converter, MyACComplexInputProc ,inInputDataProcUserData , &inNumFrames, ioData, outPacketDescription);
のMyACComplexInputProcと

setupCallbacks宣言内の
renderCallback->inputProc = MyFileRenderProc;
のMyFileRenderProc

...続きを読む

Aベストアンサー

AudioConverterFillComplexBuffer の第2引数プロトタイプ宣言や、renderCallback->inputProc での構造体メンバinputProcの型が書かれてないので確実とはいえませんが、まず間違いなくこれらは関数へのポインタ型変数で、参照されている MyACComplexInputProc や MyFileRenderProcは、関数自体(関数処理プログラムのアドレス)を表していると思います。関数アドレス自体でなく、別の「関数へのポインタ型変数」かもしれません。

下記のプログラムの意味が分かるでしょうか?2行目が関数アドレスの「関数へのポインタ」への代入、4行目が「関数へのポインタ」から「関数へのポインタ」への代入です。
double (*p)(double),(*q)(double);
p=sin; q=cos;
printf("%10.8f\n",(*p)(3.1416/2));
p=q;
printf("%10.8f\n",(*p)(3.1416/2));

Q【C#】クラスのコンストラクタ引数参照渡しでエラー

C#の.NETでWindowsアプリを作成しております。
C++/CLI経験はありますが、C#は全くの素人です。

AクラスからBクラスに、Cクラスを参照渡しで渡し、
BクラスにてCクラスのメンバ変数の値を書き換えた後、
Aクラスでその値を使用するといったプログラムを作成しようと思っています。

Bクラスを生成する際に、コンストラクタの引数渡しにて、
Cクラスを渡す書き方をしたのですが、下記エラー

エラー CS0051: アクセシビリティに一貫性がありません。
パラメータの型 'ref Test.C' のアクセシビリティは
メソッド 'Test.B.B(ref Test.C)' よりも低く設定されています。

が発生してしまい、解決法が分かりません。
何か根本的なことが間違っているのでしょうか。。

解決策をご存知の方おられましたら、ご教示お願い致します。

下記にサンプルコードを記載します。

【Aクラス】
B b = new B( C c );

【Bクラス】
namespace Test
{
public partial class B : Form
{
public B(ref C c)// コンストラクタ
{
InitializeComponent();
}
}
}

【Cクラス】
namespace Test
{
class C
{
public int hoge;
}
}

C#の.NETでWindowsアプリを作成しております。
C++/CLI経験はありますが、C#は全くの素人です。

AクラスからBクラスに、Cクラスを参照渡しで渡し、
BクラスにてCクラスのメンバ変数の値を書き換えた後、
Aクラスでその値を使用するといったプログラムを作成しようと思っています。

Bクラスを生成する際に、コンストラクタの引数渡しにて、
Cクラスを渡す書き方をしたのですが、下記エラー

エラー CS0051: アクセシビリティに一貫性がありません。
パラメータの型 'ref Test.C' のアクセシビ...続きを読む

Aベストアンサー

アクセス修飾子というのは,publicやinternalを指します。
Cは省略されているため,internalになっています。

よって,
public B(ref C c)
を,
internal B(ref C c)
とするのが,
> メソッドのアクセス修飾子を引数の型のアクセス修飾子にあわせる
の方法になります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報