• ベストアンサー

引数 戻り値 return文について

今、C言語を初めて勉強してます。 勉強していて、引数と戻り値、return文 についてよくわかりません。 どなたか詳しく素人にもわかるように教えて 頂けないでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.2

まず、関数とは何らかの処理をして結果を返してくれるものです。わざとらしい例ですが二つの数を足してその結果を返す関数を見てみましょう。 #include <stdio.h> int add( int hoge, int piyo ){ return hoge + piyo; } int main(void){ int data; data = add( 253, 434 ); printf( "%d", data ); return 0; } 見てわかると思いますが、引数とは関数内の処理に使うデータです。 このデータは関数を呼び出すときに与えます。 add( 253, 434 ) すると与えられたデータは関数に渡され仮引数と言うものに格納されます。 この例では hoge に 253、piyo に 434 が格納されます。 int add( int hoge, int piyo ){ この仮引数は普通の変数のように使うことが可能なのです。 hoge + piyo そしてこの結果を戻り値として return 文で返してやります。 return hoge + piyo; 返すとは具体的にどこへ返すのかと言うと呼び出したところへです。 ここでは main 関数内の呼び出し元です。 data = add( 253, 434 ); data と言う変数へは関数によって返された戻り値(関数値とか返却値とかとも言ったりします)が格納されます。つまり 253 と 434 を足した数です。 引数も戻り値も結局はデータです。処理させたいデータが引数で、処理した結果であるデータが戻り値です。 return は呼び出し元へ結果を返すためのものです。 C言語の関数にはいろいろな種類があります。 引数も戻り値もあるもの。 int add( int hoge, int piyo ){ return hoge + piyo; } 引数はあるが戻り値のないもの。 void add( int hoge, int piyo ){ printf( "%d", hoge + piyo ); } 戻り値はあるが引数のないもの。 #include <stdlib.h> #include <time.h> int getRandNum(void){ srand( time( NULL ) ); return rand() % 500; } 戻り値も引数もないもの。 void print(void){ printf( "%d + %d = %d", 253, 434, 253 + 434 ); } これらの使い分けはデータの内容や型、処理の内容により適宜必要なものを使ってください。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

先日、JAVAで似た質問があって例えを使って説明しました。参考程度に見てください。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=550592
全文を見る
すると、全ての回答が全文表示されます。
  • amuro_78
  • ベストアンサー率20% (9/43)
回答No.1

まずC言語の関数ていうのは、ひとつの何か の機能を果たしてくれる便利機能です。 そして引数っていうのは返り値を引っ張ってくるための "もの”です、これは数字という限りではありません。 たとえば数学なんかでf(x)っていうのを みたことありますよね? このfってのいうのは関数の名前です。 そしてxというのは引数のことです。 だから例えばf(x)=2x+3と書いていてあったとします。 ここに引数としてx=2を入れると2*2+3=7 つまり7と言う返り値が返ってきます。 C言語だとこんなに簡単には行かないことが あります。いろいろ引数の型をしないと いけなかったりします。 return文ついては説明が下手なので 他の方におまかせします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • return文がない場合の戻り値はどうなる?

    C言語で、return文がない場合の戻り値を固定にする方法はないでしょうか?例えば、return文がない場合の戻り値は必ず0にする、というような動きにする方法が知りたいのです。c++では0を返すようです。。。よろしくお願い致します。

  • プログラミングの返り値戻り値は必ずreturn文と

    プログラミングの返り値戻り値は必ずreturn文とセットで使うんですか? returnがない時は返り値戻り値は使えないですか?

  • 引数と戻り値がわかりません

    Javaを勉強中なのですが、引数と戻り値がよく分かりません。 自分で買ったテキストをベースに進めているのですが、ここで詰まってしまいます。 具体的に表現するのが難しいのですが、値がどこに行ってどういう流れになっているのかが 自分で追えず混乱してます。 public static method X (String name){ return name; ↑こういう記述です。 「値をとってくる」、「呼び出し元へ値を返す」という事が分かってないのだと思います。 まだまだ知識が覚束ないのでわかりにくいかもしれませんが、 ご教授願います。

  • 戻り値について

    ただ今、c言語の勉強をしている者です。 本を読んでいて分からないところがあったので ご指導して頂ければと書き込みました。 それは、最初と最後のところです。 int main(void) { ・ ・ 処理 ・ ・ return 0; >int main(void) このintというのは 戻り値が整数だと言うことだと思うのですが 戻り値が文字の場合ということも あるということですか? 例えば、 char main(void) ということもあるのでしょうか? また、voidというのは 他の名前にしたらいけないのでしょうか? > return 0; というのは、 正常に終わったら戻り値を0にしろということですか? ご指導して頂ければと思います

  • 戻り値と引数

    戻り値と引数の概念がよくわかりません。 質問内容は2つ (1)「戻り値は値を関数元に返す」 とありますが 返すとどうなるのですか? また返さないとどうなるのかを教えて下さい。 (2)引数に関しては眺めていればこの引数が値を渡してるというのは なんとなくわかるのですが、実際のプログラムを組んで関数を作成するときに何を引数にすればいいのかさっぱりです。それを教えて下さい。

  • return 引数 がよくわからないです。

    JAVAを勉強しているのですが、returnと引数がよく意味が分かりません。 returnをどういう場合につけて、どう付けると、どこに影響があって、どういう結果になるのか、がよくわかりません。 returnが付く場合と付かない場合の違いもよくわかりません。 引数については、()内に何も書かれなかったり、書かれたりの違いがわからないのと、()内に書かれている文字がどこに影響を与えるのか、とか、さっぱりわかりません。 詳しい方いらっしゃいましたら、わかりやすく教えてください。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • VBAでの戻り値と引数について

    最近VBAでプログラムを勉強しています。 引数と戻り値について教えてください。 定義としては、 引数:プロシージャに渡される定数、変数、および式。 戻り値:呼び出し元に処理の結果を戻す値。 となっているのですがいまいちピンときません。 SubプロシージャとFunctionプロシージャでその違いがあると思うのですが、具体的にどれが引数でどれが戻り値なのかわかりません。 他のプログラミングも全く経験がない初心者で初歩的な質問ですみませんがご教授お願いします。

  • main関数の戻り値について

    c言語において、main関数の戻り値は何を意味しているのですか。 また、void型にすれば、main関数の戻り値を書かなくても問題無いでしょうか。 また、関数はreturn文を書かなくても、最後まで処理を実行すると終了するらしいですが、void型にすれば、main関数でreturn文を書かなくても問題無いでしょうか。

  • return文

    return文で、下記のような書き方を見つけたのですが、 これはどういう戻り値になるんですか? return(a == b); a・bは共にint型の変数です。

    • ベストアンサー
    • Java
  • 関数の戻り値がextern

    C言語を、他人のプログラム例を見ながら勉強を始めた者です。 ----- abc.h ----- extern char aaa(); (1) extern char bbb(); (2) ----- abc.c ----- char aaa() { char sw; (3) } char bbb() { char sw; return sw; (4) } Q1. (1)(2)は戻り値が外部変数ということでよいのでしょうか? YESとすれば(4)で自動変数のswが戻り値になっているのは何故でしょうか? Q2. (3)のbbb()では戻り値がvoidではないのに return文がないのは何故でしょうか? 初心者なので質問自体が変だったらスミマセン。