void指针的使用规则1. void指针可以指向任何类型的数据,即,可以在任何类型的指针处为void指针指派值。 例如:
int *a; void *p; p=a; 要将void指针p指定给其他类型的指针,必须强制执行类型转换。 在本例中,a=(int * ) p。 内存分配中可以看到使用void指针。 内存分配函数malloc函数返回的指针是void *类型,用户在使用该指针时必须强制执行类型转换。 也就是说,明确说明此指针指向的内存中存储了什么类型的数据((int * ) malloc ) 1024 )表示mallloc返回的void *指针是强制定义的
ANSI C标准不允许对void指针执行算术运算,如p或p=1。 因为void没有类型,所以char类型不知道每个算术运算操作多少字节,例如sizeof (操作char字节,int操作sizeof(int字节) )。 GNU允许。 默认情况下,GNU认为void *和char * *相同,因此既然已经确定,当然可以进行一些算术操作。 在此为sizeof(*p )==sizeof ) char )。