我有幾個關於指針的問題。指針添加檢查
我有以下結構
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)時一個dding一個數字,讓我們說2到一個帶地址的ptr可以說10001 是10003的值,或者10001 + 2 * sizeof(X),其中x是ptr的類型。 2)如果ptr = 10001是內存中的字符數組,那麼該數組中的第一個字符在位置10001處,是位置爲10002或10009處的第二個字符?或者它會是什麼?
3)要到buf-上面顯示的打印輸出>數據的地址是2008年,我不知道怎麼加10至它使其指向2012年
在此先感謝。
2008 + A = 2012 in hex – jn1kk
是的,謝謝,不知道我錯過了它:D – user1253073
所有這些問題你可以找到答案。通過**自己嘗試** ... –