値渡し(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)」を使うことで
複数の変数への影響を与えることが可能になります。

C言語
スポンサーリンク
色白おばけをフォローする

おすすめプログラミングスクール

「侍エンジニア塾」は、未経験者でも結果が出せるプログラミング学習サービスです。
専属のインストラクターとの対面かSkypeでのレッスンを通じてプログラミングスキルを身につけて頂き、就職や転職までサポートします。
「侍エンジニア塾」の『3つ』の大きな特徴

  1. 完全マンツーマンレッスン
  2. フルオーダーメイドカリキュラム作成
  3. 独立・起業・フリーランス支援

誰もが自分の技術で稼げる人材になるための教育プログラム
TECH::EXPERTのこだわりは「実務的な教育コンテンツ」と「徹底したサポート体制」の2つです。

  1. 現場で使える実践的な技術が身につく
    有名企業のエンジニアへヒアリングを重ね、1年かけて創り上げた教育プログラムがあなたを実務レベルの即戦力エンジニアへ高めます
  2. 学習方法はライフスタイルに合わせて学べます
    ・一気にエンジニアへ駆け上がる「短期集中スタイル」
    ・無理なく確実にエンジニアへ「週末集中スタイル」
    ・自分のペースで自由に学ぶ「オンラインスタイル」

TECH::CAMP(エンジニアスクール)。
【Webアプリケーションコース】
全くの未経験からWebアプリケーション開発に必要なスキルを全て学ぶことができます。
【iPhoneアプリコース】
全くの未経験から最新の開発言語Swiftを用いてiPhoneアプリ開発を学ぶことができます。
自分だけのiPhoneアプリつくって世界に向けてリリースしたい方には自信を持っておすすめできる内容です。

ソフトウェア開発日記
タイトルとURLをコピーしました