[過去ログ]
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1478440682/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
880: デフォルトの名無しさん [] 2017/07/09(日) 16:06:32.28 ID:EeQkMvgZ ポインタそのものにオブジェクトってできるんでしょうか? 例えば、配列arrayのアドレスをポインタpで、ポインタpのアドレスをポインタpのポインタppで調べたんですが、 int array[3]; int *p = array; int **pp = &p; for(i = 0; i < 3; i++) { printf("&array[%d] : %d : %d\n", i, &array[i]); } &array[0] : 2293472 &array[1] : 2293476 &array[2] : 2293480 &p[0] : 2293472 &p[1] : 2293476 &p[2] : 2293480 &pp[0] : 2293468 &pp[1] : 2293472 &pp[2] : 2293476 ppが参照しているpのオブジェクトの位置が、arrayのオブジェクトのアドレスと全く同じ位置にあります。 1つのアドレスが2つのオブジェクトをもてるのか、ポインタ自体にオブジェクトは生成されないのか 他の要素でそうなってるのかわかりません。どなたか回答宜しくお願いいたします。 http://mevius.5ch.net/test/read.cgi/tech/1478440682/880
881: ◆QZaw55cn4c [sage] 2017/07/09(日) 16:13:17.36 ID:VF1qtZ3L >>880 その出力を一挙に得られるプログラムを示せ,アドレスはプログラムの実行ごとに変わる可能性がある http://mevius.5ch.net/test/read.cgi/tech/1478440682/881
882: デフォルトの名無しさん [sage] 2017/07/09(日) 16:20:52.70 ID:v/7piv3Y >>880 pとarrayは異なるオブジェクトだから確認方法が間違ってる http://mevius.5ch.net/test/read.cgi/tech/1478440682/882
889: デフォルトの名無しさん [sage] 2017/07/09(日) 17:16:44.02 ID:Uu/MlKNR >>880 > &pp[0] : 2293468 これはpのアドレス > &pp[1] : 2293472 > &pp[2] : 2293476 pp[1], pp[2]は存在しないからアクセスしちゃダメ たぶん 2293464: pp 2293468: p 2293472: array[0] 2293476: array[1] 2293480: array[2] みたいなメモリ割り当てになってるんだろうな http://mevius.5ch.net/test/read.cgi/tech/1478440682/889
907: ◆QZaw55cn4c [sage] 2017/07/12(水) 07:26:19.94 ID:9q9UgJkW >>880 ん、最初にもどってメッセージを書くとすれば、こうなるかな >ポインタそのものにオブジェクトってできるんでしょうか? 私が意味を取り違えているかもしれないが、「できない」 ポインタを取得したからといって、オブジェクトが生えてくることはない あくまで、先にオブジェクトを確保した上で、それに対してポインタを設定する手順をとる >例えば、配列arrayのアドレスをポインタpで、ポインタpのアドレスをポインタpのポインタppで調べたんですが、 array を確保しているので、p は array 確保分(p 〜 p + 3)だけプログラムとして意味がある。 pp は p 一個分だけ意味がある。すなわち *pp = p、でも pp[1]= *(pp + 1) は確保していない領域を指すのでこの表現は使ってはいけない &pp[1] と書くとなにがしかのアドレスを生成するが、それは使えない アドレスを生成できるからといって、その領域が意味のあるものとは限らない >>881 では意味のないことを求めてしまいごめんなさい http://mevius.5ch.net/test/read.cgi/tech/1478440682/907
929: ◆QZaw55cn4c [sage] 2017/07/13(木) 06:27:44.49 ID:NDMOLt7F >>927 >>880 int **pp = &p; でpp[1] は書いちゃだめだろう? http://mevius.5ch.net/test/read.cgi/tech/1478440682/929
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.084s