c - 是否可以将有符号整数存储在整数指针 (int *) 中?

标签 c pointers integer boolean

整数指针(实际上是任何指针类型)的特别之处在于您可以为它们分配 NULL 非整数类型的值;而整数无论如何都必须存储一个整数,无论​​是正整数还是负整数(如果我错了请纠正我),并且没有非整数值。

然后,您能否利用指针的这种“特殊”特性(作为可以存储整数和非整数值的变量:NULL)同时存储整数值(通过它们的字面实际值,而不是地址,它将存储一个有符号/无符号整数)并且是一种 boolean - 其中 NULL pointer 表示false 和一个有效指针(即保存整数的指针)(但不是真正有效的 ofc,只是一个不是 NULL 的指针)将表示 true

注意:指针绝不会用于访问内存位置,只是用于存储一个 int。

(Ofc 这只是针对特定用例,并不是说您会在常规代码中执行此操作)


(如果你真的想知道)我正在尝试制作一个递归函数,并希望函数的返回值返回一个整数,但也想跟踪一个条件,所以我也希望它返回一个 boolean 值,但你显然只能返回一个参数......所以可以传递一个整数指针,一个可以同时执行这两个操作的变量,作为解决方案吗?

我想到了其他方法(结构、数组..),但很好奇使用整数指针是否是一种合理的方法。

最佳答案

关于 NULL,指针没有什么特别之处。在不以 8086 实模式运行的基于现代 Intel 的实现中,指针只是一个无符号整数,NULL 为 0。您不能以这种方式存储“额外”的东西。

如果您需要从函数返回两个值,请创建一个包含 intbool 的结构,并让您的函数返回它。

关于c - 是否可以将有符号整数存储在整数指针 (int *) 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51580780/

相关文章:

c++ - 关闭应用程序是否释放在 C++ 中使用 new 分配的空间?

c++ - 将指针传递给函数

php - 在 PHP 中测试变量是否为数字的正确方法是什么?

visual-studio - 调试时如何配置 Visual Studio 以将整数显示为小数?

c - 为什么我们在 C 中有 unsigned 和 signed int 类型?

c++ - pclint 执行时包含文件的顺序是否重要?

c - 在分配的内存范围之外写入时没有错误

C 表示以 2 为底数的 int

c - 在 C 中如何将变量设置为最大可能的数字?

c - 使用 if 语句的 union 输出