C 基本講座

関数に値を渡す

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

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

字幕

このレッスンでは関数に値を渡す方法について説明します。この’プログラムは関数に実引数として変数の値を渡しています。まずは実行してみましょう。このような結果を表示しています。func1 の中では仮引数 x をインクリメントしているのでfunc1 の x は 11 になっています。ところが func1 を呼んだ後のmain 関数の x は 10 のままです。値を渡す場合にはmain の実引数の x とfunc1 の仮引数の x は別々にメモリ上に存在します。試しに両方の x のアドレスを表示してみましょう。&を付けると x のアドレスを取得することができます。%p 書式指定でアドレスを表示することができます。このように別々のアドレスであることがわかります。別々のアドレスにあるということは別々の変数ですからfunc1 で x をインクリメントしてもmain の x には影響がありません。一方関数にアドレスを渡す方法もあります。この場合、変数のアドレスを実引数で渡し、仮引数ではそれをポインタで受け取ります。プロトタイプ宣言も必要なのでこの部分をコピーしておきましょう。そしてここに貼り付けます。セミコロンもつけます。 実行してみましょう。今度は func2 の x もmain の x も 11 と表示されました。このようにポインタを使ってfunc2 の方で x をインクリメントするとmain の x も同じようにインクリメントされます。アドレスを渡す例は特に配列の内容を一度に関数に渡す場合に多用されます。例えば値を渡す場合にはこのように配列要素を1つずつ渡すしかありません。実行してみましょう。このように配列の合計を15 と表示しています。けれどもこのように配列要素を1つずつ渡すやり方は実用的ではありません。通常はこのように配列のアドレスを関数に渡し、そして関数からはポインタを使って main 関数で宣言した配列の内容を間接参照します。実行してみましょう。するとこのようにアドレスで渡した場合も合計値を得ることができます。この場合、要素数を渡すことで要素数がいくつでも配列の和を求めることができます。書き直してみましょう。このようにプロトタイプ宣言と配列の定義の先頭に要素数を加えます。そして5ではなく要素数ぶんループで回すようにします。実引数のほうにも要素数を記述します。ここはちょっと邪魔なので畳んでおきます。 実行するとこのように要素数に関係なく合計を求められるようになりました。配列添字演算子を使用するとアドレス渡しはもっとわかりやすく記述することができます。この部分をコピーして書き直してみましょう。関数名は変えておきます。配列添字演算子に書き直します。この部分も配列添字演算子に書き直しておきます。呼び出す部分もここをコピーして貼り付け関数名を変えます。引数はアドレスと要素数です。プロトタイプ宣言も書き直しましょう。このように出来上がります。ここもちょっと畳んでおきます。実行してみましょう。このように結果を表示することができます。この [ ]は配列添字演算子と呼ばれます。配列添字演算子を用いるとポインタをあたかも配列のように見せかけて扱うことができます。ポインタが苦手だという人は配列添字演算子を使っても良いでしょう。ただし、この[]の中に要素数を記述しても要素数を渡すことはできません。ですから、この例のように別に引数を用意して要素数を渡してください。このレッスンでは関数に値を渡す方法について説明しました。

C 基本講座

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

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

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

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

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