| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1418 人关注过本帖
标题:void *rBuffer和
只看楼主 加入收藏
zz4611100
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2021-8-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
void *rBuffer和
BOOL APIENTRY getPrintIDStatus( WORD pageID, void *rBuffer, WORD *rResult )

请问这个  void *rBuffer是什么意思
搜索更多相关主题的帖子: BOOL WORD void 
2021-08-05 16:43
zz4611100
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2021-8-5
收藏
得分:0 
还有*(WORD*)&bstatus[0]

麻烦各位大佬解答了
2021-08-05 16:44
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:4 
*(WORD*)&bstatus[0]

一般会定义 char bstatus[20];
取bstatus[0]的地址,并强制转化为WORD*指针,然后取该WORD*指针指向的内容,也就是两个字节长度的内容,就是bstatus[0],bstatus[1]的内容。
void *rBuffe

void *可以接收到的指针类型为任意指针,在具体使用时在转化为需要的指针类型,例如char*,int*。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2021-08-05 19:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
*(WORD*)&bstatus[0]
这是一种错误用法,违反了“类型别名使用规则”。
在C中,应该使用 memcpy;在C++中,可以使用 std::bit_cast。

“类型别名使用规则”比较复杂,
C语言参见 https://zh.
C++语言参见 https://zh. 中间的“类型别名化”那一段描述
2021-08-06 08:41
我善治鬼
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:107
专家分:181
注 册:2015-2-16
收藏
得分:4 
我来说一下这里的错误
BOOL APIENTRY getPrintIDStatus( WORD pageID, void *rBuffer, WORD *rResult )
void *rBuffer, WORD *rResult
这两个参数没有定义输出或输入说明符, 不知到底是输出还是输入
void *rBuffer 这个没有类型定义, 不知道到底是什么格式
*(WORD*)&bstatus[0]    这个既然需要强制转换类型了, 为什么不直接定义为WORD类型
2021-08-06 09:06
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
收藏
得分:4 
void *rBuffer 意思是你可以传入任何类型的指针。 void *用在函数参数中,可以使调用者很舒服。 比如memcpy函数, 你可以copy任意不同类型的两个指针指向的数据,而不用在传参时强制转换为固定的类型。

*(WORD*)&bstatus[0] 其实写成 *(WORD*)bstatus 更直观。
2021-08-06 11:12
星泪成寒
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:77
专家分:549
注 册:2013-5-19
收藏
得分:4 
一个关于C语言声明的网站 https://
2021-08-06 14:57
自由而无用
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
收藏
得分:4 
void *rBuffer stream buffer for reading interface
uint8_t *buffer = (uint8_t *)rBuffer;

*(WORD*)&bstatus[0];
eg &bstatus[0] = 0x12ff9c; uint16_t *p = (uint16_t *)0x12ff9c;
int do_sth(uint16_t *array); do_sth(p);
2021-08-09 17:08
快速回复:void *rBuffer和
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012830 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved