虚空的大小

And*_*dna 1 c pointers

如果我想操作指向一个字节的指针,我应该使用void*或char*,因为我听说过

sizeof(char)
Run Code Online (Sandbox Code Playgroud)

并不总是1个字节,那么void*呢?如果我做

void *p
++p
Run Code Online (Sandbox Code Playgroud)

它会进一步指向一个字节吗?

cni*_*tar 8

在C 指针中,没有为void指针定义算术.指针算术本质上与指向类型的大小相关联.而对于void *尖头类型的大小是未知的.

要查看指针算法如何适用于不同的对象,请尝试以下方法:

int obj[5];
int *ip = obj;
char *cp = (char *)obj;

ip++;
cp++;

printf("%p\n%p\n", ip, cp);
Run Code Online (Sandbox Code Playgroud)

但是,如果编译器支持它,则void指针上的指针算法与char指针上的指针算法相同.

  • @Andna是的,`sizeof(char)`是定义1. (2认同)