人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C言語C++言語初心者です。よろしくお願いします。

overload1.cpp
http://d.hatena.ne.jp/gbs01/20090502/1241259897

overload1b.cpp
http://d.hatena.ne.jp/gbs01/20090502/1241259898

上記二つのコードに関して教えていただきたいことがあります。

http://d.hatena.ne.jp/gbs01/20090502/1241259898
にある
int Input(int &i, double &d)
はどういう意味なのでしょうか?

http://d.hatena.ne.jp/gbs01/20090502/1241259898
にあるように
int Input(int *i, double *d)
としてはいけないのでしょうか?

overload1.cppとoverload1b.cppは同じ結果となりました。
どちらの書き方が正しいのでしょうか?
ご教授よろしくお願いいたします。

●質問者: gbs01
●カテゴリ:コンピュータ 学習・教育
✍キーワード:C++ C言語 DOUBLE コード 初心者
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

* はポインタを、& はアドレスを意味します。

そして、このような渡し方を「参照渡し」と呼びます。


ポインタとアドレスの関係は下記のようになります。

int i, *j;
i = 100;
j = &i;

overload1.cppとoverload1b.cppとでは、Input関数の中で、ポインタ * を使うかどうかを変えることで、結果的に同じ事をしています。


どちらが正しいかというご質問ですが、C言語でできる参照渡しは *i だけ、C++でできる参照渡しは &i というルールになっています。処理系によってはどちらでもできるものもありますが、このルールに則った方がいいかと思います。

◎質問者からの返答

ありがとうございます。


2 ● AZUY
●35ポイント ベストアンサー

C++から導入された仕様です

---

参照渡しという方法で引数を使用しています。仮引数の記述に注目して下さい。「int& num」となっています。ポインタ渡しであれば「int* num」ですが、記号が違います。参照の変数は、このように & を付けて表します。これはポインタの変数(ポインタ変数)を * を付けて表すのと同じことです。 & を付けた変数のことを参照変数、エイリアス 等といいます。変数のアドレスを表すときに使う & と同じ記号を使うので紛らわしいですが、参照のときに & を付けるのは、参照変数を宣言するときだけです。参照変数に値を代入するようなときには、何も付けません。

http://www.geocities.jp/ky_webid/cpp/language/015.html

これならわかるC++―挫折しないプログラミング入門 (ブルーバックス)
これならわかるC++―挫折しないプログラミング入門 (ブルーバックス)小林 健一郎

講談社 2001-05
売り上げランキング : 6218

おすすめ平均 star
star定評のある名著です。
starC++でオブジェクト指向を知る一冊
star「試してみたい人」&「中級者」向け.初心者が勉強するための本ではない.

Amazonで詳しく見る
by G-Tools

◎質問者からの返答

ありがとうございます。

教えた頂いたサイトも参考になりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ