1. 程式人生 > >void * 無型別指標(泛型指標)

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