关于指针 参数,

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:11:50
Vertex *v=0;
mesh->lockVertexBuffer(0,(void**)&v);
请把v的转换过程详细的说一下。
你可能理解错我的意思了,我是问v这个指针在作为参数的时候用到的取地址符和强制转换的意思。
我的理解是v是个指向Vertex的指针,&v则是这个指针的存放地址,也可以为是指向这个指针的指针。所以强制转换就是把&v作为整体转换成指向指针的指针,我的理解对不对?好久没用指针了。。。。C#里没这东西0 0

这时directx 里面的吧
这条语句原理就是:
你不能直接修改一个mesh的顶点数据(为了多线程安全等原因)
所以当需要修改时,要先通知系统把数据锁定一下
然后系统返回给你数据块的头指针
这个头指针没有保存价值,用完就扔掉,
最后unlock一下,就完成了读/写 操作了

补充:
c里面指针格式有严格的定义
比如
int *i=NULL;
char *c=i;//编译就是错的,但实际也没什么大毛病,
变成这个就没错了
char *c=(char *)i;

你那个语句他是要修改V的值得,也就是改变v指向的地址
而&v就是一个指向v的指针(指针的指针)
但因为c++要求严格的指针格式匹配,你必须加上(void **)