c - C 中指针值 Null

标签 c pointers null

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

这里 *A 应等于 B,
这里*B应该等于C,
这里*C应该等于D,
我应该为 D 的值输入什么来指示列表的停止?输入0有危险吗?

最佳答案

uintptr_t 是整数类型。它的意思是“无论大小的整数都足以容纳指针的位”。因此,如果 p 指向某个内容,(uintptr_t *)(p) 是指向整数的同一地址,而 GET(p)因此是它指向的整数。 NULL 是指针类型,因此您尝试将其分配给整数,这是不允许的。

将其赋值为 0 是允许的,但我不确定这是否是您想要的,因为您暗示您想要将指针清空,而赋值 0 将使指针指向整数 0,而不改变指针本身。

我怀疑您根本不需要所有的转换,但您实际上只想处理指针。但是如果没有看到其余代码,我就无法知道您要做什么。

关于c - C 中指针值 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26768703/

相关文章:

c - 如何在Keil中发送AT命令

c++ - 编译器显示错误消息 "makes pointer from integer without cast"(反转数组)。我该如何解决这个问题?

c - 对于数组,为什么会出现a [5] == 5 [a]?

c - 将结构传递给 ISR

c - 努力编写一个简单的计算器

调用 free() 导致我的程序崩溃

c - 编译器不会因函数参数使用不一致而发出警告

c++ - NULL vs nullptr(为什么被替换了?)

c# - 在 C# COM 中处理 NULL 指针输出参数

c# - 值为 null,但检查返回其他值?