void * 无类型指针(泛型指针)

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;
        }

猜你喜欢

转载自blog.csdn.net/qq_40738945/article/details/85216644