ポインターについていくつか質問があります。
私は次の構造体を持っています
struct buffer {
char *ptr;
char data[DATA_SIZE];
};
そして私は次のコードを持っています
printk("ptrs and what not: buf=%p, b-ptr=%p, b-data=%p, INIT_LOC=%lu\n", buf, buf->ptr, buf->data, INIT_LOC);
if (buf)
buf->ptr = buf->data + INIT_LOC;
printk("ptrs and what not: buf=%p, b-ptr=%p, b-data=%p, INIT_LOC=%lu\n", buf, buf->ptr, buf->data, INIT_LOC);
出力は次のとおりです。
ptrs and what not: buf=ffff880091ae2000, b-ptr= (null), b-data=ffff880091ae2008, INIT_LOC=10
ptrs and what not: buf=ffff880091ae2000, b-ptr=ffff880091ae2012, b-data=ffff880091ae2008, INIT_LOC=10
質問
1) 数値を追加する場合、アドレスを持つ ptr に 2 とします。たとえば、10001 が値 10003、または 10001 + 2 * sizeof(X) であるとします。x は ptr のタイプです。
2) ptr=10001 がメモリ内の文字の配列である場合、その配列の最初の文字は位置 10001 にあり、2 番目の文字は位置 10002 または 10009 にありますか? またはそれは何でしょうか?
3) 上記の buf->data のアドレスは 2008 です。10 を追加すると 2012 を指すようになるのかわかりません。
前もって感謝します。