相关疑难解决方法(0)

空指针算法

给定一个void指针,如果我想让void指针指向x前面的字节,那么最好如何做到这一点?有没有比投射到char指针更好的方法?

c++

26
推荐指数
1
解决办法
1万
查看次数

void*算术

#include<stdio.h>
int main(int argc,char *argv[])
{
   int i=10;
   void *k;
   k=&i;

   k++;
   printf("%p\n%p\n",&i,k);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

++是对void*的合法操作吗?有些书说它不是,但K&R没有说任何关于void*算术的内容(K&R 2/e的第93,103,120,199页)

请澄清.

PS:GCC至少在k ++中没有抱怨.

c auto-increment

23
推荐指数
2
解决办法
7871
查看次数

当sizeof(char)!= 1时,C中的字节精度指针算术

如何以单字节精度可移植地执行指针运算?

请记住:

  • char 在所有平台上都不是1个字节
  • sizeof(void) == 1 仅作为GCC的扩展名提供
  • 虽然某些平台可能具有指针deref指针对齐限制,但算术仍可能需要比最小基本POD类型的大小更精细的粒度

c compiler-construction portability void-pointers pointer-arithmetic

1
推荐指数
2
解决办法
3089
查看次数