首页 > 编程知识 正文

函数指针数组用法(关于void类型指针-----void*、void**)

时间:2023-05-03 06:13:58 阅读:123285 作者:4767

指针有两个属性:它们指向变量/对象的地址和长度

但是,指针只存储地址,长度因指针类型而异

编译器根据指针的类型从指针指向的地址向后方进行地址指定

地址范围因指针类型而异。 例如:

int*从指定的地址向后方寻找以4字节为变量的存储单元

double*查找从指定地址向后以8字节为变量的存储单元

1.void指针是一个特殊的指针

void *vp

//那是因为没有什么类型

//或者说,该类型无法确定指向对象的长度

2 .可以将任何指针分配给void指针

类型* p;

vp=p;

//不需要转换

//变量/只获取对象地址,不获取大小

3 .如果3.void指针指定给其他类型的指针,则进行转换

类型* p=(类型* ) vp;

//获取转换类型,即指针变量/对象大小

到:http://I coding.spaces.live.com/blog/cns! 209684E38D520BA6! 130 .进入

4 .无法重新引用4.void指针

*vp//错误

因为void指针只知道指向变量/对象的起始地址

另一方面,由于不知道变量/对象的大小(以字节为单位),因此无法正确引用

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

(类型* ) vp;

//VP==VPsizeof(type )。

void *定义指针变量,但不指示它指向哪种类型的数据。

1 .传参:通用型

可以用作函数模板、链表等参数的公共参数。 使用时,只需强制类型转换即可。

2 .强制类型转换

由于过载等干扰,可能需要转换为void *才能获取地址。

例如,(void * ) obj.member可以获取member的地址。 直接(obj.member )获取的实际上是obj的开始地址。

指向3.0的地址

(void * ) 0指的都是0的地址,相当于NULL。

非void类型显式转换为void类型,用于避免某些代码静态检查工具的警告。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。