C 中表示指针大小的正确类型?

标签 c c99

当然我可以做类似的事情

sizeof (void *);

但我觉得我会读到一种仅用于表示 ISO/IEC9899 地址频谱的类型。

类似ptrdiff_t

问题是,我正在使用 va_list 并且不知道指针是什么类型。

所以我更喜欢通用的指针类型,而不是像 int *char * 这样的特定类型

我的代码如下:

void param_exec (tmp, ...)
{

    va_list vlArgList;
    void *szArgLocation;

    va_start (vlArgList, tmp);
    szArgLocation = va_arg (vlArgList, void *);
    va_end(vlArgList);

    return;
}

仅仅使用 void* 感觉很不对劲,但是还有其他更合适的类型吗?

有人能给我命名这种类型吗(如果有的话)?

最佳答案

阿贾伊几乎做到了这一点。看Important Data Types 。您的选择是 ptrdiff_t 表示两个指针相减结果的有符号整数类型,size_t 表示用于表示的无符号整数类型对象的大小。唯一的其他警告是:

Compatibility Note: Implementations of C before the advent of ISO C generally used unsigned int for representing object sizes and int for pointer subtraction results. They did not necessarily define either size_t or ptrdiff_t. Unix systems did define size_t, in sys/types.h, but the definition was usually a signed type.

关于C 中表示指针大小的正确类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24177723/

相关文章:

c++ - UDP 客户端不在 esp32 上广播消息

c - 为什么我的 x64 程序在 Windows 上无声地崩溃?

c - 使用递归将数字的数字相乘

c - 绑定(bind)到 fe80::%<范围>

c - va_copy() 是否需要 va_end()?

无符号整数递增会导致未定义的行为吗?

c - 指向整数并再次返回的指针

c - 在 C 中读取 '<' 之后的命令行参数

c - 为什么不需要所有最小宽度整数类型(最多 64 位)的存在?

c - 用 c99 定义 off_t