哪一行是定义指针的正确(最佳)方式?
typedef ptrdiff_t pointer; // pointers are ptrdiff_t.
-- or --
typedef void* pointer; // pointers are void*.
pointer ptr = malloc(1024);
Run Code Online (Sandbox Code Playgroud)
在C指针型的T*,其中T在所述类型指向; void*是通用指针类型.通常,你让C隐式转换void*为有用的东西,例如
char *buffer = malloc(1024);
Run Code Online (Sandbox Code Playgroud)
ptrdiff_t 是两个指针的减法返回的类型,例如
ptrdiff_t d = write_ptr - buffer;
// now you know the write_ptr is d bytes beyond the start of the buffer
Run Code Online (Sandbox Code Playgroud)
ptrdiff_t是一个整数类型,而不是指针类型; 你不能*在它上面使用间接运算符.(void*顺便说一句,你也无法在a上有意义地使用它.)
如果你想将指针存储在整数类型中,uintptr_t那就合适了.
| 归档时间: |
|
| 查看次数: |
814 次 |
| 最近记录: |