当然我可以做类似的事情
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/