指针值在C中为空

时间:2014-11-05 22:52:38

标签: c pointers null

PointerName --- ---地址值
--------- A --------- 1111 ------ 2222
--------- B --------- 2222 ------ 3333
--------- C --------- 3333 ------ 4444
--------- D --------- 4444 ------停止

这里* A应该等于B,
这里* B应该等于C,
这里* C应该等于D,
我应该为D的值添加什么来表示停止列表?是0危险?

2 个答案:

答案 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。