void * 無型別指標(泛型指標)
阿新 • • 發佈:2018-12-23
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;
}