[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/30 19:11 / Filesize : 249 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.48【環境依存OK】



276 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:29:58 ]
ちょっとお尋ねしたいのですが、
char *p
というポインタに、なにかしらのアドレスが格納されていて、
cout << p;
とした時に、仮に
ss[100] = {a b, c ...}; (ss[100] = \0 とする)
p = ss;
だった場合は、ss[0]から順に\0が出てくるまで走査して、
cout << p;
で、abc... と表示するわけですよね。つまり配列の要素100個分順番に読み込んでるってことですよね。

では、もしポインタpに格納されているアドレスが普通の変数のアドレス
p = &a
みたいな場合だった時は、
cout << p;
では、単純に変数aのアドレスが出力されるだけですよね。

で、ここで疑問なのですが、
p = &a;
cout << p;
だった時、処理系はどうやってpが「変数」のポインタだと判断するのでしょうか??
「配列」のポインタの場合もあるので、何かしらの方法で判断していると思うのですが、
「メモリを順番に走査して\0が出てこなかったら変数のポインタ」だとしたら
毎回\0が出てくるまで番地を順番に走査していかなくてはならないので(\0が出て来ないかもしれないのに(変数の場合))何か違う気がします。
ポインタには、アドレスや型の情報だけではなくて、そのアドレスが変数のアドレスか、それとも配列の先頭アドレスかという情報も入っているんでしょうか?






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef