スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ポインタ変数の参照渡し

ポインタはややこしい
"func(int *&p)" って何だよ?

分かったのでメモします。

★基本
まず、関数の引数の渡し方には2種類ある。ここ重要。
・値渡し・・・変数の中身をコピーして渡す
・参照渡し・・・変数そのものを渡す


★C言語
C言語の関数では値渡ししか出来ない。
ただし、変数のアドレスやポインタ変数を引数にしてポインタ変数で受け取れば、参照渡しと同じ効果が得られる
main側:func(&x);
関数側:func(int *p){...}
もしくは
main側:func(*p);
関数側:func(int *p){...}


★C++
C++も値渡しについては同様であるが、参照渡しも可能
"変数"を引数にして、"&変数"で受け取れば、参照渡しになる
main側:func(x);
関数側:func(int &x){...}

故に、C++では以下のようなことが可能となり混乱する
ポインタ変数の参照渡し
main側ではfunc(*p);
関数側ではfunc(int *&p){...}


以上
スポンサーサイト

オブジェクト指向

前回、「オブジェクト指向」という言葉が出てきたので、説明します。

Visual Studio 2008 Standard Edition


オブジェクト指向って何?
関連するデータの集合と、メソッド(関数とかサブルーチン)を「オブジェクト」と呼ばれる一つのまとまりとして管理し、その組み合わせによってソフトウェアを構築するもの。
すでに存在するオブジェクトについては、利用に際してその内部構造や動作原理の詳細を知る必要はなく、外部からメッセージを送れば機能するため、特に大規模なソフトウェア開発において有効な考え方であるとされている。

だから、オブジェクト指向って何?
「カプセル化」「継承」「ポリモーフィズム」とを称して「オブジェクト指向の三大要素」と呼ぶことがあります。
・カプセル化とは、
複数のメソッド(関数)と複数の変数を一つにまとめてクラスにして、外部からのアクセス範囲を限定し、実行時にはインスタンスを作る(クラスに定義した変数領域を新しくメモリー上に確保する)こと
⇒つまり、ソフトの保守性や開発効率が高まるってこと

・継承とは
既に定義されたクラスの一部分を共通部分として受け継ぎ、新しいクラスを作る事
⇒つまり、再利用を簡単にしてるってこと

・ポリモーフィズム
呼び出す側を共通化する仕組み。
同じように呼び出したとしても、呼び出される側がその内容に合わせて処理(メソッド)を使い分ける。
⇒つまり、柔軟に対応するってこと


いや、だからオブジェクト指向って何?
ヨコモジだらけでわからん って人は、これだけでも知っておこう。
オブジェクト指向プログラミングとは、ちょっとややこしいルールや処理が入って短期的に見るとメンドーだけど、大規模なプログラムを書くにあたっては、中・長期的に見ると、保守性や再利用性が高く、非常にメリットがあるもの。
この考え方は、膨大なプログラムを書いて苦労した先人の知恵なのです。



ちなみに、C++もVBもJavaもオブジェクト指向です。

なお、これらのプログラミングを始めるに当たって、全て無料で環境が整います
いや~、便利な時代ですね。

例えば、Visual Studio Express Edition → ここ


05 | 2017/06 | 07
Su Mo Tu We Th Fr Sa
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
プロフィール

エレクトリックバカ

Author:エレクトリックバカ

ポケコンでプログラミングに目覚め、PICマイコンで電子工作に希望を抱き、来たるべきUGDの時代を夢見て眠る。
そんな うだつが上がらないサラリーメン。
先生、電子工作はおやつに入りますか?




Electric Baka

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。