C++ void指针解析

来源:互联网 发布:js中的radio length 编辑:程序博客网 时间:2024/06/05 16:21

指针的解析:

      指针有两个属性:指向变量/对象的地址和长度 ,但是指针只存储地址,长度则取决于指针的类型 ,编译器根据指针的类型从指针指向的地址向后寻址 ,指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 ,double*从指定地址向后寻找8字节作为变量的存储单元


void指针:

1.void指针是一种特别的指针

void *vp //说它特别是因为它没有类型 //或者说这个类型不能判断出指向对象的长度 

2.任何指针都可以赋值给void指针
type *p; vp=p; //不需转换 //只获得变量/对象地址而不获得大小 

3.void指针赋值给其他类型的指针时都要进行转换

type *p=(type*)vp; //转换类型也就是获得指向变量/对象大小 

4.void指针不能复引用
*vp//错误 因为void指针只知道,指向变量/对象的起始地址 而不知道指向变量/对象的大小(占几个字节)所以无法正确引用 

5.void指针不能参与指针运算,除非进行转换

(type*)vp++; //vp==vp+sizeof(type)

      对于void指针,若要对void指针进行取值,则需要先将void指针本身转化为对应类型的指针才能进行取值

void test(void *p){   unsigned int value = ?;   printf("%d\n",value);}int main(){   unsigned int vv = 10;   test(&vv);   return 0;}

问号处应填:*((unsigned int *)p)


0 0
原创粉丝点击