1 00:00:07,185 --> 00:00:09,540 [Powered by Google Translate] クリスGERBER:この関数は、内部の一連の手順です 2 00:00:09,540 --> 00:00:12,000 通常呼び出されることを想定して大規模なプログラム、 3 00:00:12,000 --> 00:00:14,440 複数回に複数の他の場所から 4 00:00:14,440 --> 00:00:15,720 プログラム。 5 00:00:15,720 --> 00:00:18,480 C関数を作成する場合、要件の1つはにある 6 00:00:18,480 --> 00:00:21,050 戻り値の型を指定します。 7 00:00:21,050 --> 00:00:23,490 最も単純なケースでは、呼び出し側の状況です 8 00:00:23,490 --> 00:00:26,510 コー​​ドは、関数の結果とは関係ありません。 9 00:00:26,510 --> 00:00:28,530 我々はデータを印刷しているとき、これはそうであるかもしれません 10 00:00:28,530 --> 00:00:31,120 printf関数と同様に、ユーザーのディスプレイ、。 11 00:00:31,120 --> 00:00:33,140 この場合において、我々は戻り値を宣言することができます 12 00:00:33,140 --> 00:00:35,020 void型で。 13 00:00:35,020 --> 00:00:37,130 voidを使用すると、単純にコンパイラに指示し、そのノー 14 00:00:37,130 --> 00:00:39,120 値が返されます。 15 00:00:39,120 --> 00:00:40,530 これはどのようなものか見てみましょう。 16 00:00:40,530 --> 00:00:42,940 >> 我々はそのsay_helloと呼ばれる機能を持っていることを言うてみましょう 17 00:00:42,940 --> 00:00:44,490 つの引数を取ります。 18 00:00:44,490 --> 00:00:47,050 我々はそれを人の名前を渡すだろうし、それは挨拶を表示します 19 00:00:47,050 --> 00:00:48,380 画面に表示されます。 20 00:00:48,380 --> 00:00:50,505 名前はchar *型であることでしょう。 21 00:00:50,505 --> 00:00:53,080 そして、我々は、引数としてそれを指定します。 22 00:00:53,080 --> 00:00:55,970 私のアプリケーションは、それを印刷したかを知る必要がある場合、またはしていません 23 00:00:55,970 --> 00:00:56,970 印刷された。 24 00:00:56,970 --> 00:00:59,680 だから戻り値がvoid型になります。 25 00:00:59,680 --> 00:01:02,060 この関数は、次のようなコマンドで画面に印刷することができます 26 00:01:02,060 --> 00:01:07,620 のprintf( "こんにちは、%sを\ n 27 00:01:07,620 --> 00:01:12,100 "名); 28 00:01:12,100 --> 00:01:14,690 挨拶が表示され、制御が渡されます 29 00:01:14,690 --> 00:01:16,260 呼び出し元のコードに戻る。 30 00:01:16,260 --> 00:01:19,370 もう一つ注意すべきは、戻り値の型がvoidであるときということです 31 00:01:19,370 --> 00:01:20,790 あなたはリターンを含める必要はありません 32 00:01:20,790 --> 00:01:22,300 関数内のステートメント。 33 00:01:22,300 --> 00:01:25,270 あなたがいずれかを含めるように選択した場合、戻り値が含まれていません 34 00:01:25,270 --> 00:01:27,420 引数として渡されます。 35 00:01:27,420 --> 00:01:29,380 >> いくつかのケースでは、それは返すために理にかなっている 36 00:01:29,380 --> 00:01:30,570 関数からの値。 37 00:01:30,570 --> 00:01:33,900 我々はadd_floatsという関数を書いていたとしましょう​​。 38 00:01:33,900 --> 00:01:36,160 我々はそれに2つの引数は、両方の浮動小数点数を、通過します 39 00:01:36,160 --> 00:01:37,510 第一および第二と呼ばれる。 40 00:01:37,510 --> 00:01:40,520 それはそれらの浮動小数点数の和が何であるかを教えてくれる。 41 00:01:40,520 --> 00:01:43,000 我々は、我々は一緒に2つの浮動小数点数を追加した場合、その結果を知っている 42 00:01:43,000 --> 00:01:44,120 floatになります。 43 00:01:44,120 --> 00:01:47,540 ことを考えると、我々は、floatの戻り値の型を選択します。 44 00:01:47,540 --> 00:01:50,040 この関数は、このような計算を実行すると戻ります 45 00:01:50,040 --> 00:01:52,260 リターンのようなステートメント内の値 46 00:01:52,260 --> 00:01:54,770 第一+第2; 47 00:01:54,770 --> 00:01:57,300 制御が呼び出し元のコードに戻された場合、 48 00:01:57,300 --> 00:02:00,030 値が得られたことは今そのコードに利用可能です。 49 00:02:00,030 --> 00:02:04,250 我々は次のようにこの値を格納することができます:float型の結果を= 50 00:02:04,250 --> 00:02:09,410 add_floats(3.14、1.62 51 00:02:09,410 --> 00:02:11,290 ); 52 00:02:11,290 --> 00:02:15,200 この場合の結果は現在値4.76を含んでいるでしょう。 53 00:02:15,200 --> 00:02:18,620 >> 念のため、浮動小数点値は不正確である。 54 00:02:18,620 --> 00:02:21,250 これはドルを使用しており、財務計算だったので、もし 55 00:02:21,250 --> 00:02:24,960 セント、我々はこのような正確なデータ型を考慮する必要があります 56 00:02:24,960 --> 00:02:29,120 INTとペニーの計算を実行します。 57 00:02:29,120 --> 00:02:31,270 >> 我々はから値を返すようにしたいであろうもう一つのケース 58 00:02:31,270 --> 00:02:33,980 関数は、関数があった場合、我々は知っているしたい場合です 59 00:02:33,980 --> 00:02:35,960 成功した。 60 00:02:35,960 --> 00:02:39,190 それが成功しなかった場合、我々はまた、どのようなタイプの知りたいと思うかもしれません 61 00:02:39,190 --> 00:02:41,250 エラーが発生しました。 62 00:02:41,250 --> 00:02:43,647 我々は数えるために、ディスク上のファイルを開こうとしていると言ってみましょう 63 00:02:43,647 --> 00:02:45,220 それの文字数。 64 00:02:45,220 --> 00:02:48,635 ファイルを開くことができない場合、我々は止めることができるようにしたいと 65 00:02:48,635 --> 00:02:50,910 問題についてユーザに通知します。 66 00:02:50,910 --> 00:02:54,070 >> 私達は私達の機能count_file_charsを呼ぶことにします、それは意志 67 00:02:54,070 --> 00:02:55,490 つの引数を取る。 68 00:02:55,490 --> 00:02:57,420 我々は、使用してファイルの名前を渡します 69 00:02:57,420 --> 00:02:59,610 char *のfilenameという。 70 00:02:59,610 --> 00:03:03,050 この関数は、このように見えるかもしれません。 71 00:03:03,050 --> 00:03:05,450 この例では、カウントに戻っ期待 72 00:03:05,450 --> 00:03:07,130 0以上であること。 73 00:03:07,130 --> 00:03:08,870 これは私達に負の整数を残す 74 00:03:08,870 --> 00:03:10,200 センチネル値として使用します。 75 00:03:10,200 --> 00:03:13,320 センチネル値は単にではない特別な値です 76 00:03:13,320 --> 00:03:16,200 正当なデータではなく、情報を譲渡するものではありません。 77 00:03:16,200 --> 00:03:19,480 ここで、私は、呼び出し元のコードに-1を返した場合、私は 78 00:03:19,480 --> 00:03:21,830 実際にエラーが発生したことを示すメッセージを送信中 79 00:03:21,830 --> 00:03:23,810 ファイルにアクセスしよう。 80 00:03:23,810 --> 00:03:26,060 私はその後、私のかどうかを判断するために、その戻り値をチェックすることもでき 81 00:03:26,060 --> 00:03:28,060 関数呼び出しが成功しました。 82 00:03:28,060 --> 00:03:30,350 数値が0以上であった場合、私は知っているだろう 83 00:03:30,350 --> 00:03:32,180 ファイル内の文字数。 84 00:03:32,180 --> 00:03:35,310 しかし、数が0未満だった場合、私は単純に可能性 85 00:03:35,310 --> 00:03:37,350 問題が発生していたことを印刷します。 86 00:03:37,350 --> 00:03:40,120 考慮すべき一つのトレードオフは、すべて予約することによって、ということです 87 00:03:40,120 --> 00:03:43,180 これがあると仮定してセンチネル値として負の値、 88 00:03:43,180 --> 00:03:46,070 32ビット整数は、私は基本的に周りに取り去りました。 89 00:03:46,070 --> 00:03:48,970 20億可能な戻り値。 90 00:03:48,970 --> 00:03:51,270 >> 戻り値の型は、最も重要な要素の一つである 91 00:03:51,270 --> 00:03:52,460 関数呼び出し。 92 00:03:52,460 --> 00:03:54,670 うまくいけば、この短い概要は、考える助けた 93 00:03:54,670 --> 00:03:59,110 3キータイプ:ボイド、結果値、およびセンチネル値、 94 00:03:59,110 --> 00:04:00,190 とするとき3の各々はあるかもしれない 95 00:04:00,190 --> 00:04:02,010 あなたのコード内の適切な。 96 00:04:02,010 --> 00:04:03,260 見てくれてありがとう。