• ベストアンサー

returnの使い方

c言語初心者です。 returnを使って違う関数からはじめのmainのプログラムに戻したいのですが、引数の使い方がいまいちよくわかりません。 どなたか良い方法を教えてください。 よろしくおねがいします。

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

  • ベストアンサー
回答No.4

No.2です。 返答からは、なにか根本的な勘違いがあるようです。 「引数」は、「ある関数Aから呼ばれる関数Bに対して、AがBに対して値を渡す為に使用する宣言」、 「return」は、「ある関数Aから呼ばれた関数Bが、実行した結果を返す為に使用する命令文」です。 「呼び出された関数に戻る」であって、「関数の先頭に戻る」ではありません。 >returnを使って違う関数からはじめのmainのプログラムに戻したいのですが については、 ----------- int func1() {  return 0; } main() {  int a;  a = func1(); } ----------- で質問を満たします。 また >引数の使い方がいまいちよくわかりません。 については ----------- func2( int b ) {  ; } main() {  int a = 0;  func2( a ); } ----------- のようなものが回答になります。 一番の問題は >プログラムを初期画面に戻すようにしたいのですが、プログラムが終わると終了してしまうのです。 が質問文に無かったことです。 この一文があれば遠回りすることはありませんでした。 なお、質問者さんの言う「初期画面」とはどのような画面のことですか?

armpoint
質問者

お礼

ご丁寧にどうもありがとうございました。 大変参考になります。

その他の回答 (5)

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.6

>funcという戻り値が何故でてきたのですか? funcは関数の名前の例です。戻り値のことではありません。 >returnを使って違う関数からはじめのmainのプログラムに戻したい ここで書かれている「違う関数」の例として、funcを挙げました。

armpoint
質問者

お礼

ありがとうございます。 みなさんのおかげでなんとか理解できました。

回答No.5

以下のようなプログラムで答えになっていますか? void main(){ : : while(1){//無限ループ : 初期画面を出す処理 : if(fun(xxx)==-1) break;//funからー1が戻ってきたらループを抜けて終了。それ以外は続行 } 終了処理 } int fun(xxx){ if(異常終了か?)return -1;//終了したいときは-1を返す 正常処理  return 0;//初期画面に戻りたいときは-1以外を返す }

armpoint
質問者

お礼

ありがとうございます。 なんとか理解できました。

回答No.3

return の次に書くものを引数と呼んでいるのでしょうか? 実際これを引数とはよびませんが・・・・・・。 以下のプログラムが参考になりますか? #include <stdio.h> int fun(int i,int j);//プロトタイプ宣言 void main(){ int j; j=fun(10,20); //10+20がjに代入される printf("%d\n",j); } int fun(int i,int j){ //funの前のintはfunが返す値の型 int result; result=i+j; return result; //return文の次に書く変数の型はfunが返す値の型と同じ } int fun・・・なので、resultの型はintでなければなりません。 funの本体は以下でもOKです(returnの次に式を書いてもOK) int fun(int i,int j){ return i+j; //return文の次に書く式を評価した型はfunが返す値の型と同じ }

armpoint
質問者

補足

私の質問の仕方が悪かったです。 プログラムを初期画面に戻すようにしたいのですが、プログラムが終わると終了してしまうのです。 そのためにreturnを使ってうまくプログラムを初期画面に戻すことで完成させることができると考えたのですが、、、うまく伝わらなかったですね。 申し訳ないです。

回答No.2

>引数の使い方がいまいちよくわかりません。 引数のどういったところが「いまいち」理解できませんか?

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

returnの使い方と引数の使い方は、全く別の話です。 ある関数funcが、呼び出し元のmainにreturnするのは、funcの戻り値です。 引数は、mainからfuncを呼び出すときにfuncに与えるデータです。 どちらのことが知りたいのでしょうか?

armpoint
質問者

補足

funcという戻り値が何故でてきたのですか? 初心者で申し訳ないです。

関連するQ&A

  • C言語でmain関数でのreturnとexit

    C言語でmain関数でのreturnとexitは同等とされてますが、 それは『プログラムを呼び出した元の動作』も同じですか? 例えばshellやOSから見て、割り当てメモリ開放などの点で returnで終了したプログラムの後処理と exitで終了したプログラムの後処理は 全く同じになりますか?

  • C言語全体の考え方が不明です

     今日は、Cの初心者です、宜しくお願いします。  Cプログラムの「int main(){・・・・return 0;}」 とはどのような意味でしょうか。  これはプログラム全体をひとつの関数(サブルーチン、サブプログラム)と考えているのでしょうか。  また、この「return 0;」をコメントにしても特にエラーは出さないのですが(警告は出てるかも)。  このC言語全体の考え方とはどのようなものでしょうか。  戻り値をとる場合も当然あるのでしょうか。  他の言語から入った者には、何か言語全体のスタンスというか、位置づけみたいなものが非常に分かりにくいです。  宜しくお願いします。 ==================================================== int main() { printf("hello\n"); // return 0; }

  • main文のreturnは0以外は何ができるの?

    はじめまして。c初心者です。 main文の最後に書くreturnはreturn 0 の0を変えると、プログラムが終了した後、もう一度起動するみたいな話を聞いたことがあります。returnについて教えていただけませんか?よろしくお願いします。

  • C言語のreturnの使い方

    return a, b; のように2つの引数で値を返せることを最近になり 知りました。ところで以下のような使い方は可能でしょうか? test( , )という2つの引数が必要な関数にnum()で return 1,2としてひとつの関数呼び出しで引数2個分に すると言うようなことです。 #include <stdio.h> int test( int i, int j){   printf("%d %d",i,j); } int num(void){   return 1,2; } int main(void){   test( num() ); }

  • EXIT関数のGcc3.2.3でのコンパイルエラー

    mainで異常終了するときにexit関数で終了するHP-UX Cのプログラムがあります。 これをGcc3.2.3でコンパイルすると下記のエラーとなります. これをコンパイルエラーとしない方法を教えてください。 C言語の書物上は、引数なしでもOKなのですが。 「関数 `exit' への引数が少なすぎます」

  • 引数 戻り値 return文について

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

  • return文について

    C言語を独学で勉強中です。 最初から分からないのがあったので、質問させていただきます。 #include <stdio.h> main() { printf("Hello World!!\n"); return(0); } return(0)を記入しなくてもエラーはでないのに、 なぜ必要なんですか? 参考書には何も書いてないので分かりません。 よろしくお願いします。

  • C言語でのコマンドライン引数の内部での処理のされ方

    C言語でint main(int argc, char *argv[])とメイン関数を宣言します。 2番目の引数はC言語の文法的にいうと文字列へのポインタの配列だとおもいますが、一般的な関数でこの引数に値を渡すとすると、以下のように宣言されたポインタ配列を渡すことになるとおもいます。 ・宣言 char *pa[]; ・関数への渡し func(pa); 話が元に戻りますが、main関数でもらう場合は、プログラム外部から与えられた引数は(正確に言うとアドレス)、メモリ上ではC言語で書かれたexeファイルの外から実行時にプログラムファイルのメモリ上にコピーされるのでしょうか? 自分でもうまく表現できないのですが、 ・コマンドプロンプトで引数を与えて実行         ↓ ・プログラムファイルのメモリ上に引数がロードされる ということでいいんでしょうか? 自分でもなんだかうまく表現できないので、お暇な方でよろしいので、気が向いた人、回答ください。 よろしくお願いします。

  • return 1

    #include<stdio.h> int fact(int num); int main(void) { int i; printf("Input figure freely:"); scanf("%d", &i); printf("%d", fact(i)); return 0; } int fact(int num) { if(num>0){ return num * fact(num-1); }else{ return 1; } } -------------------------------------------- 上のプログラムは再帰呼び出しを使った階乗計算の プログラムです。 func()関数内のreturn 1の意味をどなたか教えて いただけないでしょうか?

  • main()とint main(void)の違い

    最初main()と習ったのですが、最近学校でmain()ではなくint main(void)を使うように なりました。 どのように違うのでしょうか? main関数のところに引数が入っている意味がわかりません。 (void)ってなんですか? そもそも引数って何ですか? あと、プログラムの最後にreturn(0)って書いてあるんですが、これはどういう意味ですか? 回答よろしくお願いします。

専門家に質問してみよう