基本

値渡し(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

Contents1 SQLでIFを使わずに条件分岐する1.1 1.テーブルとデータの準備1.2 2.条件を分岐させて検索1.3 3.解説 SQLでIFを使わずに条件分岐する SQLでIFを書けばWHE ...

SQLServer 3

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

4

Contents1 SQLServerでテーブル型を戻り値とする関数を作る1.1 テーブル型を戻り値とする関数の作成1.2 呼び出しかた SQLServerでテーブル型を戻り値とする関数を作る SQL ...

5

Contents1 アフィリエイトで即効成果を出す1.1 自分で買えば確実に成果が上がる1.2 A8.netでは自分で購入してもOKなものがある1.2.1 A8.netにサイトを登録する1.2.2 承 ...

-基本
-, , , ,

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