惭愧....一个比较基础的问题

wangsiyuanoo 2009-08-26 02:06:37
char m_btReadBuf[MAX_READ_BUF];
bool ReadBinary(char ** data);

怎么把m_btReadBuf作为ReadBinary的参数传进去?

ReadBinary(&m_btReadBuf );
错误:不能将参数 1 从“char (*__w64 )[1024]”转换为“char ** ”
...全文
147 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sou2012 2009-08-26
  • 打赏
  • 举报
回复
帮顶!!!
ly309431053 2009-08-26
  • 打赏
  • 举报
回复
wensheng_zh2007 2009-08-26
  • 打赏
  • 举报
回复
同样惭愧啊
cv_china 2009-08-26
  • 打赏
  • 举报
回复
另外LZ好像是用vc2005编译的吧,用的是Unicode字符集,所以使用时要注意char和wchar的混用
Paradin 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wangsiyuanoo 的回复:]
引用 7 楼 paradin 的回复:
我想知道ReadBinary(char**p)里面干了什么 ,是不是改变了*p

bool CG_CmdPacket::ReadBinary(char **data, int *len)
{
short dataLen;
if (!ReadShort(&dataLen)) return false;
if (dataLen <= 0) return false;
//if ((m_nReadOffset + dataLen) > m_nLen) return false;
*data = m_pReadData + m_nReadOffset;
*len = dataLen;
m_nReadOffset += dataLen;
return true;
}
[/Quote]


这样很明显他内部维护了一个组数,你只需传递一个指针去得到数据的位置即可
char *p;
int len;
ReadBinary(&p, &len);
这样p就指向了某个数据了
猜的。
gamecicn 2009-08-26
  • 打赏
  • 举报
回复
接上
char m_btReadBuf[MAX_READ_BUF]; 作为一个Buffer 就好了。
gamecicn 2009-08-26
  • 打赏
  • 举报
回复
按LZ所说, 只是用于输出一个指针的值, 这样就可以了吧。 干嘛要开辟一个数组呢?

char* pBuf;
ReadBinary(&pBuf );
wangsiyuanoo 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 paradin 的回复:]
我想知道ReadBinary(char**p)里面干了什么 ,是不是改变了*p
[/Quote]
bool CG_CmdPacket::ReadBinary(char **data, int *len)
{
short dataLen;
if (!ReadShort(&dataLen)) return false;
if (dataLen <= 0) return false;
//if ((m_nReadOffset + dataLen) > m_nLen) return false;
*data = m_pReadData + m_nReadOffset;
*len = dataLen;
m_nReadOffset += dataLen;
return true;
}
cv_china 2009-08-26
  • 打赏
  • 举报
回复

//bool ReadBinary(char ** data);
char m_btReadBuf[MAX_READ_BUF];
char* pBuf = m_btReadBuf;
ReadBinary(&pBuf );
gamecicn 2009-08-26
  • 打赏
  • 举报
回复
不能对数组名称m_btReadBuf, 取地址。 应为m_btReadBuf是一个常量, 对他取地址没有意义。
如果bool ReadBinary(char ** data); 的参数形式没错, 那么楼主就应该用动态获取内存

char *p_buff = malloc(MAX_READ_BUF);
ReadBinary(&p_buff);

或者LZ可以修改 ReadBinar(char ** data) 为 ReadBinar(char *data)
大师赵 2009-08-26
  • 打赏
  • 举报
回复
数组名值为首元素地址,但是数组名本身没有地址
Paradin 2009-08-26
  • 打赏
  • 举报
回复
我想知道ReadBinary(char**p)里面干了什么 ,是不是改变了*p
wangsiyuanoo 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 paradin 的回复:]
可以编译但估计不是lz的意图
[/Quote]
我想要的是一段缓存区去存放一些东西
wangsiyuanoo 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xujg811 的回复:]
ReadBinary((char**)&m_btReadBuf );
[/Quote]
我一直有个疑问,强转会影响本来变量所表示的内容么?
Paradin 2009-08-26
  • 打赏
  • 举报
回复
可以编译但估计不是lz的意图
Paradin 2009-08-26
  • 打赏
  • 举报
回复
貌似不该用数组的。
char *p = m_tReadBuf;
ReadBinary(&p);

xujg811 2009-08-26
  • 打赏
  • 举报
回复
ReadBinary((char**)&m_btReadBuf );
taodm 2009-08-26
  • 打赏
  • 举报
回复
找本《C和指针》把基础补足吧。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧