質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

1640閲覧

参照ってつまりなに??

cheeeeeeese

総合スコア179

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/08/28 01:35

皆様質問がございます。よろしくお願い申し上げます。

今回、google先生に尋ねたところ「参照」とは 照らし合わせ、参考にすることと定義しています。

ただ、プログラマーの皆様方の言及する「参照」は上記の意味とは異なるとため、皆さんに「参照」の定義をお教えいただければと思います。

知りたいことの例

例1
プログラミングの広義の意味での「参照」の意味を知りたい。

例2
「はじめてのRuby」第6章 変数と式 6.1の変数の項目にて

文字リテラルによって生成されたStringオブジェクトにcattleという名前をつけています。

言い換えれば、変数cattleにオブジェクトへの「参照」を格納しています。

のオブジェクトへの参照を格納していますという意味。

cattle = "yapoo"

上記の2点を参考に考えると、どうも「参照」という単語は単一的な意味合いではなく、多面的な意味合いとして使われているように見受けられるため、今回多くの回答を期待いたします。

よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

「参照」の概念は「"値渡し" や "値のコピー"」をセットで考えないと、意味や意義が見えてこないかもしれません。
根本的には、下記のような違いがあります。

参照は他の回答者さんも言われているように、値そのものではなく「値の記憶先を示すもの」です。
教科書や文献等を読んでいるときに、注釈で「〜を参照」というように記述されている場合がありますが、あれと似た話です。何度も同じことを書くのは無駄なので「参照先を指定する」ことで、記述者の労力を省いています。コンピュータの場合、データの記憶先が分かっていれば値を直接受け取るよりも参照先を受け取る方が処理コストが小さい場合が多いので、参照という方法にはとても意味があります。

参照とは対照的に、値渡しや値のコピーというのは、渡す度に情報のコピーを作りながら行う動作のことを指します。
現実世界で例えると、相手に伝える際に持っている資料をそのまま渡すのではなく、コピーを作ってそれを渡すようなものです。コンピュータの場合、変数から変数にデータを代入する場合にコピーか参照かで処理コストは違います。これは関数へ引数を渡す場合にも同じことが言えます。

「参照かコピーか」という件については、処理を行う際に元になるデータに変更が加わるか否かという状況によって扱いを選ぶ必要も出てくる問題なので、どちらか一方だけできればよいという話ではありません。
必要に応じて使い分ける局面があることも念頭におく必要があります。

投稿2015/08/28 05:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cheeeeeeese

2015/08/29 08:16

ありがとうございます。 参照とは、「値の記憶先をしめすものである」というのは、文字列をある変数に代入する、つまり文字列にラベルをつけて扱いやすくする行為に近似していると感じました。 今回はわかりやすい事例を扱いながらお教えいただきありがとうございます。 より理解が深まり、頭がすっきりしました!! 失礼致します。
guest

0

C/C++を使っていたときは、参照のことを「リファレンス」と呼んでいました。
つまり実体に対する別名という印象です。

C/C++の場合は、関数の引数で渡されてきた物を更新しても、呼び出し側には反映されません。これは引数として渡ってきた物が、コピーされたものでしかないからです。

関数に内容を更新するためには、ポインタを渡すか、参照を渡します。
こうすることによって、ポインタが指すアドレスの中身を変える、別名が指す実体の値を変えるといった事が可能になります。

ではポインタと参照をどの様に使い分けるのかといいますと、参照が使えるのであれば、できるだけ参照が良いと思います。(ポインタには他に使い道があるので、常にという分けではありません)

ポインタを渡してしまうと、NullPointerExceptionの危険性がつきまといます。(C++にはありませんが)
そのため、できるだけ参照を渡して、事故を防ぐ意味合いがあります。

投稿2015/08/28 04:12

shanxia

総合スコア1038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cheeeeeeese

2015/08/29 07:51

ありがとうございます!!
guest

0

「実際のデータが置かれているメモリ上の場所」と考えるのが一番わかりやすいかと思います.
Stringをはじめとしたオブジェクトはメモリ上のどこかにそのデータの実体が置かれ,
変数にはその置かれている場所を示す値が渡されるのです.
この「場所を示す値」を参照値と言ったりします.
プログラマがこの参照値を直接知る方法は基本的には無いですし,また知る必要もありません.

投稿2015/08/28 02:09

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cheeeeeeese

2015/08/29 07:53

参照値に関してお教えいただきありがとうございます!! オブジェクトはメモリ上のどこかにそのデータの実体が置かれ、変数にはその置かれている場所を示す値が渡されます。 この「場所を示す値」を参照値と定義します。
guest

0

例1と例2は抽象度が違うだけで同じことを指していると思います。
参照とはメモリ上に貼られた付箋のようなものだと思います。
例2から説明すると。
1:String str = "hoge"
2:"hoge"
1はメモリ上に"hoge"を用意し、そこにstrと書き込んだ付箋を貼る行為です。後で、使うときはこの付箋を探せばいいのです。
しかし、2のようにすると、"hoge"を後から使うときに付箋が無いので使うことができません。この付箋の張り忘れがヌルポ等のエラーの原因と成ります。

では、例1の広義の参照とは何かといえば、コード上のクラス、メソッド、変数などなどとメモリ上の情報を結びつけることと私は答えると思います。

投稿2015/08/28 02:04

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cheeeeeeese

2015/08/29 08:00

参照の広義の意味合いに関してお教えいただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問