我有几个关于指针的问题。指针添加检查
我有以下结构
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
所有这些问题你可以找到答案。通过**自己尝试** ... –