整理网络资源
**在C语言中在任何时候都可以用void类型的指针来代替其他类型的指针,void指针可以指向任何数据类型的变量**
**如果要通过void指针去获取它所指向的变量值时候,需要先将void指针强制类型转换成和变量名类型想匹配的数据类型指针后再进行操作;**
指针的强类类型转化:
void *p;
int *pa = (int *)p;
然后才能对原来的void指针指向的空间进行操作
任何类型的指针都可以赋值给void指针,无需进行强制类型转换;
float f = 1.22f;
float *p1 = &f;
p = p1;//将float指针赋值被p
void指针的应用场合:
当进行纯粹的内存操作的时候,或者传递一个指向未定类型的指针时,可以使用void指针;
void* memcpy(void*addr1,void *addr2,size_t n);
该函数只进行纯粹的内存拷贝,包括NULL字符在内的任何内容都将被拷贝
1:对函数参数的限定
2:对函数返回的限定
3:void指针也常用作函数指针
#include<stdio.h>
int main(void)
{
int num1 = 1;
char char1 = 'b';
/*定义两个void指针类型*/
void *void_pointer_1;
void *void_pointer_2;
/*给不同的void指针指向不同的数据类型*/
void_pointer_1 = &num1;
void_pointer_2 = &char1;
printf("void_pointer_1:%d,void_pointer_2:%c\n",*((int*)void_pointer_1),*((char *)void_pointer_2));
void_pointer_2 = &num1;
printf("void_pointer1:%d\n",*((int *)(void_pointer_2)));
float float_1 = 1.25f;
float* float_pointer = &float_1;
void* void_float_pointer ;
/**将float类型指针赋值给void类型指针*/
void_float_pointer = float_pointer;
printf("float_pointer:%f\n",*((float *)void_float_pointer));
return 0;
}