PointerName --- ---地址值
--------- A --------- 1111 ------ 2222
--------- B --------- 2222 ------ 3333
--------- C --------- 3333 ------ 4444
--------- D --------- 4444 ------停止
这里* A应该等于B,
这里* B应该等于C,
这里* C应该等于D,
我应该为D的值添加什么来表示停止列表?是0危险?
答案 0 :(得分:0)
uintptr_t
是整数类型。它的意思是“任何大小的整数都足以容纳指针的位”。因此,如果p
指向某个内容,则(uintptr_t *)(p)
是指向整数的相同地址,因此GET(p)
是它指向的整数。 NULL
是指针类型,所以你试图将它分配给一个不允许的整数。
将允许为其赋值0,但我不确定这是否是您想要的,因为您暗示您想要使指针为空,并且指定0将使指针指向整数0,而不是更改指针本身。
我怀疑你根本不需要所有的投射,但你真的只想处理指针。但是,如果没有看到其余的代码,我就无法知道你想要做什么。
答案 1 :(得分:0)
NULL通常定义为(void *)0,即指针类型为值0。
假设你有A,B,C和D短信(你的意思是WORD,即16位值)。
因此,您需要为它们指定一个短片。
分配short的正确方法是使用short值,而不是使用指针,这就是NULL。