C -> アロー演算子 新しいページはコチラ
提供: yonewiki
(ページの作成:「{{記事名の制約|title=C -> アロー演算子|disablerealtitle=yes}}」) |
|||
| 1行: | 1行: | ||
| − | {{記事名の制約 | + | [[C PlusPlus#Cにもあった技術|C++]]へ戻る |
| + | |||
| + | |||
| + | <table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> | ||
| + | <tr> | ||
| + | <td style="width:1px;"></td> | ||
| + | <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C -> アロー演算子</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td> | ||
| + | </tr> | ||
| + | </table> | ||
| + | ※このページではC言語にも存在していたという意味で記事タイトルが<nowiki>C -> アロー演算子</nowiki>になっていますが、<br /> | ||
| + | [[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br /> | ||
| + | <br /> | ||
| + | == '''アロー演算子''' == | ||
| + | |||
| + | アロー演算子"->"は、クラスのメンバ変数やメンバ関数、構造体のメンバ変数を記述する際、<br /> | ||
| + | クラス変数や、構造体変数のポインタを使って、例えば、pというポインタ変数を使ってnというメンバ変数を指定する場合、<br /> | ||
| + | |||
| + | <syntaxhighlight lang="cpp"> | ||
| + | (*p).n; | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | と記述しますが、アロー演算子を使うことにより | ||
| + | |||
| + | <syntaxhighlight lang="cpp"> | ||
| + | p->n; | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | と置き換えることが出来ます。アロー演算子を使った表記が流行していますので、もはや、もともとの記述の方がよくわからないという印象もあるのかもしれません。<br /> | ||
| + | ポインタ p に対して *p って書くとアドレスの中身を返してくれるものだったことは、忘れちゃいけないよ。<br /> | ||
| + | ポインタ変数を宣言するときは (型名 *P) って書くのでした。<br /> | ||
| + | ポインタではない、型名で宣言した変数 f に対して、アドレスを取得するときは &f みたいに "&" アドレス演算子をつけるんだ。<br /> | ||
| + | |||
| + | |||
| + | pが配列ならカッコが必要になります。p + i (配列番号 i)だとしたら | ||
| + | <syntaxhighlight lang="cpp"> | ||
| + | (*(p + i)).n; | ||
| + | (p + i)->n | ||
| + | </syntaxhighlight> | ||
| + | カッコがなければメンバ名がiという変数にぶら下がっているとも判断できるので、仕方ないですね。カッコがないとコンパイルエラーになるはずです。 | ||
| + | |||
| + | |||
| + | 添え字番号に[]を使うと | ||
| + | <syntaxhighlight lang="cpp"> | ||
| + | (p[i]).n; | ||
| + | (&p[i])->n | ||
| + | </syntaxhighlight> | ||
| + | となるでしょう。 | ||
| + | <br /> | ||
| + | |||
| + | |||
| + | [[C PlusPlus#Cにもあった技術|C++]]へ戻る | ||