私はポインタと配列を理解しようとしています。 (しゃれ!)オンラインポインタを見つけるのに苦労した後、私はここに私の混乱.. ポインタと配列の混乱
//my understanding of pointers
int d = 5; //variable d
int t = 6; //variable t
int* pd; //pointer pd of integer type
int* pt; //pointer pd of integer type
pd = &d; //assign address of d to pd
pt = &t; //assign address of d to pd
//*pd will print 5
//*pt will print 6
//My understanding of pointers and arrays
int x[] = {10,2,3,4,5,6};
int* px; //pointer of type int
px = x; //this is same as the below line
px = &x[0];
//*px[2] is the same as x[2]
は、これまでのところ、私はそれを得るに述べています。今私が次のことをして、pd [0]を印刷すると、-1078837816のようなものが表示されます。ここで何が起きてるの?
pd[0] = (int)pt;
誰でも手助けできますか?
この文脈では、私は「http://www.osdever.net/tutorials/view/implementing-basic-paging」を読んでいました。 「ページテーブルの設定」セクションでは、unsigned long * page_tableを宣言し、forループ内でpage_table [i]を使用します。しかし、page_tableは配列ではないので、私はなぜそれがそのように使われているのか混乱しています。説明していただけますか? – rgamber
配列は基本的にシーケンシャルメモリへのポインタであり、配列の各要素はポインタの可変型のサイズです。この例では、メモリ内の特定のポイントから始まる符号なしロングポインタ(4バイト)を作成した後、1024回ループして基本的に4096バイトのメモリをカバーします。配列の各インクリメントは、メモリ内の次の符号なしlongであった。 –
申し訳ありませんが、私は、unsigned long pointer変数がどのように配列として使われているのか混乱しています。 「配列の各インクリメントは、メモリ内の次の符号なしlongであった」と言うが、ここで宣言された配列はなかった。助けてくれてありがとう。 – rgamber