値渡しと参照渡しについて.

Slides:



Advertisements
Similar presentations
プログラミング 関数編 情報科学科. プログラミングにあたって C 言語では、 main 内に処理を記述 1000 行になるような大きなプログラムでは、 プログラム全体が何をしているのかを把握 することが困難になる 他人が見ると非常に理解しにくい 作成者であっても時が経てば内容を忘れて、他 人が見た時と同じ状況になる.
Advertisements

情報処理Ⅱ 第8回 2004 年 11 月 30 日(火). 2 本日学ぶこと 関数と変数 目的  関数を自分で定義し,変数の利用方法・範囲を明示的に制 限することで,適切な機能分割(モジュール化,再利用) を図る. してはいけないこと  main 関数のみで 100 行以上のプログラム  グローバル変数を駆使するプログラム.
情報処理Ⅱ 第7回:2003年12月2日(火). 問題(授業がつまらない人のため に) ぷよ連結問題 前提 : フィールドを2次元 配列で定義し,各マスの 「ぷよ」を int 型の値で表現 する. ある地点を入力に取り,そ れと連結する「ぷよ」の個 数を求めよ. 消去できる「ぷよ」 (N 個以上 連結するぷよと,それに隣接する特.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
関数(静的メソッド:static method)
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第5回 関数(1) 情報・知能工学系 山本一公
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
プログラミング基礎I(再) 山元進.
基礎プログラミング 第13回(2007年5月28日) 「関数」の補足説明 Report-Fの解説.
情報処理Ⅱ 2005年12月9日(金).
問題 1 フィボナッチ数列 xn は次で定義される。
第4回放送授業.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
プログラミングII 第 7 回 オブジェクトの配列 New, delete 参照 田向.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プログラミング論 関数ポインタ と 応用(qsort)
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング2 関数
プログラミング論 ファイル入出力
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
関数と配列とポインタ 1次元配列 2次元配列 配列を使って結果を返す 演習問題
ローカル変数とグローバル変数 ローカル変数  定義された関数内だけで使用できる変数 グローバル変数 プログラム全体で使用できる変数.
プログラミング 3 構造体(2).
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
第7回 プログラミングⅡ 第7回
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
高度プログラミング演習 (08).
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
プログラミング論 ファイル入出力
5.9 メソッドのオーバーロード 5.10 変数の引渡し 2003/11/21 紺野憲一
Java8について 2014/03/07.
関数への道.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向プログラミングと開発環境
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
復習 前回の関数のまとめ(1) プログラムはmain()関数の先頭から実行される
演習0 func0, func1, func2を作成せよ. main()関数の中で,func0()を呼び出しを実行せよ.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
演習07-0 “Hello\n” “World!\n”と
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
プログラミング論 ポインタ
nativeの基礎知識 「ポインタ」てなによ!?
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
第5回 プログラミングⅡ 第5回
プログラミング論 構造体
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
演習00-0 “Hello\n” “World!\n”と
コンパイラ 第12回 実行時環境 ― 変数と関数 ― 38号館4階N-411 内線5459
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
フレンド関数とフレンド演算子.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
演算子のオーバーロード.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
モバイルプログラミング第3回 Cプログラミングの基礎( 2 )
デフォルト引数 長谷川啓.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング 3 ポインタ(1).
Presentation transcript:

値渡しと参照渡しについて

引数における値渡しと参照渡し 引数が値渡しの場合 int main() { int a = 2, b = 3, c; c = add(a, b); } int add(int x, int y) { return x + y; } 値渡し: a,bのコピーを渡す 参照渡し: a,b自体を渡す 値渡しも参照渡しも a=2, b=3, c=5となる 引数が参照渡しの場合 int add(int& x, int& y) { return x + y; }

add関数内で引数の値を変更した場合,参照渡しでは元の実引数が変更される. 引数における値渡しと参照渡し 引数が値渡しの場合 int main() { int a = 2, b = 3, c; c = add(a, b); } int add(int x, int y) { x += y; return x; } add関数内で引数の値を変更した場合,参照渡しでは元の実引数が変更される. 値渡し: a=2, b=3, c=5 参照渡し: a=5, b=3, c=5 引数が参照渡しの場合 int add(int& x, int& y) { x += y; return x; }

値を返す関数と参照を返す関数 get()の戻り値が値渡し int main() class Hoge { { int x; int a; Hoge h; h.set(5); a = h.get(); } class Hoge { int x; public: void set(int a) {x = a;} int get() {return x;} }; get()の戻り値が参照渡し class Hoge { int x; public: void set(int a) {x = a;} int& get() {return x;} }; 値渡し: xのコピーを返す 参照渡し: x自体を返す どちらもa=5

値を返す関数と参照を返す関数 get()の戻り値が値渡し int main() class Hoge { { int x; Hoge h; h.set(5); h.get() = 3; } class Hoge { int x; public: void set(int a) {x = a;} int get() {return x;} }; get()の戻り値が参照渡し class Hoge { int x; public: void set(int a) {x = a;} int& get() {return x;} }; 値渡し: エラー (5 = 3;) 参照渡し: OK (h.x = 3;) set関数と同じ使い方ができる