C 文字列 新しいページはコチラ
提供: yonewiki
(→文字列) |
|||
131行: | 131行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
となります。std::cout << &cStr1でアドレスが表示されるっていうのは、実際に確かめて、初めて知った。普段、こういうことしないからね。<br /> | となります。std::cout << &cStr1でアドレスが表示されるっていうのは、実際に確かめて、初めて知った。普段、こういうことしないからね。<br /> | ||
− | で、どういうことなんだろうって調べてみた。それには数値データの配列の場合はどうなるん?って疑問から解消できないか試みてみる。<br /> | + | で、どういうことなんだろうって調べてみた。それには数値データの配列の場合はどうなるん?って疑問から解消できないか試みてみる。 |
+ | そうすると<br /> | ||
+ | <syntaxhighlight lang="cpp"> | ||
+ | int iInt1[] = {10,11,…,19}; | ||
+ | std::cout << "iInt1 =" << iInt1 << "\n"; | ||
+ | std::cout << "&iInt1 =" << &iIntr1 << "\n"; | ||
+ | std::cout << "&iInt1[0] =" << &iInt[0] << "\n"; | ||
+ | </syntaxhighlight> | ||
+ | <br /> | ||
+ | 出力結果は当然ですが、以下のようにすべてアドレス表記になる。 | ||
+ | <syntaxhighlight lang="cpp"> | ||
+ | iInt1 =003AD914 | ||
+ | &iInt1 =003AD914 | ||
+ | &iInt1[0] =003AD914 | ||
+ | </syntaxhighlight> | ||
+ | このことから、std::cout関数はcStr1[8]という配列変数に対して、cStr1という表記と&cStr1[0]という具合に指定した場合だけ、<br /> | ||
+ | 先頭アドレスから文字列として出力してくれていることになる。つまり文字列を返してくれることの方が特別なのだ。<br /> | ||
+ | 更に、この特別な処理の実態を知るために調査を進めるとなると少し難しいが配列番号も省略した癖にアドレス演算子までつけやがって、<br /> | ||
+ | もう面倒見れきれませんわ。となっているのがcout関数の実情なのだろう。cout関数のソースコードを追ってみる?んや、やめとく。<br /> | ||
+ | さすがに時間がかかりそうだ。ちょろっとWebで検索してみたが、ここまで追いかけた人もあまりいなさそう。<br /> | ||
<br /> | <br /> | ||
次はポインタを使った文字列操作についての記事を書こうと思います。なかなかやるきになんないすけどね。<br /> | 次はポインタを使った文字列操作についての記事を書こうと思います。なかなかやるきになんないすけどね。<br /> |