【初心者歓迎】C/C++室 Ver.48【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.48【環境依存OK】 - 暇つぶし2ch280:デフォルトの名無しさん
08/02/09 20:47:05
>>276

> p = &a
> cout << p;
> では、単純に変数aのアドレスが出力されるだけですよね。

(aがたとえば int であるとして。)
それは間違い。

> p = &a
これをやった時点でコンパイラは型が違うとエラーにする。
p = reinterpret_cast<&a>として無理やりキャストをしてpに int * の値を入れることは可能。

>処理系はどうやってpが「変数」のポインタだと判断するのでしょうか??
pを宣言する際に、その型を char* と指定しているから、pが実際にさす先に実際にあるものが
charの配列であっても、int型の値であっても、コンパイラはcharの文字列であると扱う。

aの値がたまたま有効な文字の文字コードと'\0'が並んだ物となっていれば、該当する文字列として表示されるし、
そうでなければ制御コードを出力したり文字化けしたりする。




次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch