如果我想操作指向一个字节的指针,我应该使用void*或char*,因为我听说过
sizeof(char)
Run Code Online (Sandbox Code Playgroud)
并不总是1个字节,那么void*呢?如果我做
void *p
++p
Run Code Online (Sandbox Code Playgroud)
它会进一步指向一个字节吗?
在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指针上的指针算法相同.