void * 无类型指针(泛型指针)
只要你是指针就可以赋值给我例如
void *vp;
void main()
{
char ch;
int n;
double x;
vp = &ch;
vp = &n;
vp = *x;
}
但是无类型指针不能做++处理,如vp++,也不能做*vp使用,因为无类型,所以无法在内存中解释字节大小。但是可以做sizeof(vp);//4字节。
但是sizeof(*vp),则不能通过编译。
在程序中可以做收纳指针的功能,但是不能吧无类型指针赋值给别的类型指针,如果一定要赋值,则需要做强转。
void main()
{
int a = 10, b = 20;
int *p = &a;
void *vp = &a;
p = &b;
vp = p;
p = (int*)vp;
}
void my_meset(void *vp, int c, int n,int x)
{
if (NULL == vp || n < 1)return;
char *p = (char*)vp;//无论什么类型的数,将其转换为char类型,这样就可以对每个字节赋值了
for (int i = 0; i < n; i++)
{
*p = c;
p++;
}
}
关于typedef和define
typedef int *pint;
#define sint int*
void main()
{
pint x, a;//x和a都是指针
sint y, b;//y是指针,b是int变量.相当于int *y,b;
}