基本

値渡し(Call by Value)と参照渡し(Call by Reference)

投稿日:

初心者には以外と難しい「値渡し(Call by Value)」と「参照渡し(Call by Reference)」

C言語では関数に複数の引数(Parameter)を渡すことができます。

引数の2つのタイプ

引数(Parameter)の渡し方には2種類あり、その値そのものを渡す「値渡し(Call by Value)」
その変数への参照(アドレス)を渡す「参照渡し(Call by Reference)」があります。

2つの違いには「値渡し(Call by Value)」は渡された関数内で
値を変更しても呼び出し元の変数には影響は与えませんが、「参照渡し(Call by Reference)」
呼び出し元の変数に影響を及ぼします。

利用例

初心者の頃はこの違いがよくわからず予期せぬ不具合に見舞われました。

以下のサンプルではsub()関数への1つ目の引数が「値渡し(Call by Value)」
2つ目の引数が「参照渡し(Call by Reference)」です。

実行結果は

となり、「値渡し(Call by Value)」で渡されたものは
呼び出し元に影響を与えませんが、「参照渡し(Call by Reference)」で渡されたものは
呼び出し元に影響を与えることができます。

関数は1つしか戻り値を持てませんが、「参照渡し(Call by Reference)」を使うことで
複数の変数への影響を与えることが可能になります。

当サイトのおすすめ記事

パソコン 1

当サイトは約5年間、さくらのレンタルサーバで運用させて頂きました。 何かトラブルがあったわけではないのですが、WordPressの表示速度を速くしたくてSSD搭載のレンタルサーバーで運用してみることに ...

プログラミング 2

SQLでIFを書けばWHERE句の内容を変えて検索できますが、条件ごとに同じようなSQLを 複数回書くのは面倒なので、1行で分岐できないかと言う事でSQLを作って見ました。 SQLでIFを使わずに条件 ...

SQLServer 3

SQLServerで発生するエラーコードをSQLで取得する SQLServerで発生したエラーコードの内容を メッセージが定義されているテーブルから取得します。 エラーコードを取得するSQL SQLs ...

4

SQLServerでは「ユーザー定義型」と呼ばれる独自のテーブル型をした戻り値を返す関数を作成することができます。 その作り方と使い方を解説します。 SQLServerでテーブル型を戻り値とする関数を ...

5

アフィリエイトでいきなり成果を出すのは難しいです。 でも、成果がないとレンタルサーバー代やドメイン代がペイできません。 しかも長い間、結果がでないとやる気もなくなってしまいます。 そういったことを防ぐ ...

-基本
-, , , ,

Copyright© ソフトウェア開発日記 , 2018 All Rights Reserved.