2014-11-05 235 views
0

指针名称---地址---值
--------- A --------- 1111 ------ 2222
- ------- B --------- 2222 ------ 3333
--------- C --------- 3333 --- --- 4444
--------- --------- d 4444 ------停止
指针值C空指针

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

+1

请显示一个最小的可编译示例。 – 2501 2014-11-05 22:55:38

+0

你不是在这里给我们真实的故事。指针是一个变量,它包含以下两项内容之一:某段内存的地址或值NULL。你想做什么?从细节上退后一步,给我们一个大的图片。 – 2014-11-05 23:23:52

+0

由于目前显示的是问题,第二列和第三列都是指针,所以“停止”值也应该是一个指针,即NULL。因为你的指针指向其他指针,所以它们的“值”也是指针。 – 2014-11-06 21:09:32

回答

0

uintptr_t是一个整数类型。它意味着“任何大小的整数都足够容纳一个指针的位”。因此,如果p指向某个东西,(uintptr_t *)(p)是指向一个整数的相同地址,因此GET(p)是它指向的整数。 NULL是一个指针类型,所以你试图把它分配给一个不允许的整数。

指定它的值为0是允许的,但我不确定这是你想要的,因为你暗示你想要一个指针为null,并且分配0会使指针指向一个整数0,而不是改变指针本身。

我怀疑你根本不需要所有的投射,但你真的只想处理指针。但是,如果没有看到其他代码,我就无法知道你想要做什么。

+0

我编辑了我的问题来澄清我的问题。 – RoastDuck 2014-11-05 23:07:44

+0

这根本没有帮助。什么是“WORD”(C中没有这种东西),你为什么认为地址属于一个?地址属于指针 - 这就是它们。 – 2014-11-05 23:09:55

+0

这里我假设字的大小是内存地址的大小。 – RoastDuck 2014-11-05 23:13:23

0

NULL通常被定义为(无效*)0即指针类型的值是0

推测你有短裤(就是你所说的话?即16位值),而且还是A, B,C和D.

因此你需要给他们分配一个短路。

分配短路的正确方法是使用短值,而不是指针,这是NULL的含义。