C 基本講座

関数から値を返す

LinkedInラーニングの無料トライアルを今すぐ試そう

無料で視聴する すべての加入プランを見る
このレッスンでは、関数から値を返す方法について説明します。
講師:
06:17

字幕

このレッスンでは、関数から値を返す方法について説明します。この maxof 関数は配列から最大値を探して返却するものです。main 関数は配列 array の先頭要素のアドレスをmaxof 関数に渡しmaxof 関数はそれをポインタで受け取っています。そして配列の先頭要素を仮の max としています。その次の要素から順にmax と比較しそれよりも大きい要素が出現したらmax を入れ替えます。この処理を配列要素の n 回ループで繰り返すとmax に最大値が求まるのでそれを return で返しています。では実行してみましょう。このように最大値に 91 と得ることができました。ところでこのポインタの部分ですがここは配列添字演算子を使っても書き換えることができます。書き換えてみましょう。まずプロトタイプ宣言と関数の定義の先頭を配列添字演算子に書き換えました。そして、処理の部分も配列添字演算子に書き換えています。配列添字演算子を使うとポインタをあたかも配列のようにアクセスすることができます。この *(a+i) は配列添字演算子を使うとa[i] で書くことができます。この部分も直しておきましょう。 呼び出す側はこのまま先程と同じように配列の先頭要素のアドレスを渡してください。実行してみましょう。先程と同じように最大値を求めることができます。さて、今度は最大値と最小値の両方を返すように書き換えてみましょう。return 文では1つしか値を返却できないのでreturn は使えませんね。このような場合には、変数を max と min の2つ用意しそれぞれのアドレスを関数に渡し関数の方ではそれをポインタで受け取るように記述します。そして、ポインタを使って間接参照しmain 側に用意された変数にこのように最大値と最小値を求めます。そうすると、main に戻ってきた時には最大値と最小値が求まっています。こちらも実行してみましょう。このように、最大値と最小値を求めることができます。更に変数のアドレスではなく配列の先頭要素のアドレスを渡してもいいですね。このように最大値と最小値を格納する配列を用意しその先頭要素のアドレスを関数に渡します。関数側ではこれを配列添字演算子を使っていますがポインタを使って main の方に値を戻すことができます。配列 m の0番目に最大値1番目に最小値が格納されていることになりますね。 こちらも実行してみましょう。先程と同じように最大値と最小値を求めることができました。この配列 m のように変更されるとわかっていてアドレスを渡す場合にはいいのですがこの配列 array の方は内容が変更される予定はありませんね。しかし、アドレスを渡すと変更することが可能になってしまいます。例えば、ここでa と m を間違えて記述してしまったとします。すると、配列 array の要素が書き変わってしまいます。このような場合には、const 型修飾子を仮引数の前に付けておくことで回避することができます。const 型修飾子をこのようにプロトタイプ宣言と関数定義の、書き換えては困る配列の前に付けておきましょう。コンパイルしてみます。すると、このようにコンパイルエラーが出ました。この const を付けることによりa は読み取り専用になり関数から書き換えるとコンパイル時にエラーが発生するようになるのです。ここは戻しておきましょう。もう一度コンパイルしてみましょう。実行もできますね。このレッスンでは、関数から値を返す方法について説明しました。

C 基本講座

C言語はUNIXというOSを記述するために開発されたプログラミング言語で、組み込みシステムの開発を中心に今も使われています。このコースでは簡単なプログラムを作成しながら、C言語の基本的な文法を学びます。データ型や制御文などの基礎的な文法からポインタや構造体といったC言語の特徴的な内容まで幅広く取り上げます。よく使われる標準ライブラリ関数も数多く紹介します。

5時間45分 (60 ビデオ)
現在、カスタマーレビューはありません…
ソフトウェア・トピック
プラン加入者限定
発売日:2017年11月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。