其中,
RCV_REPORT_STRUCTEx 是结构,
PRCV_REPORT_STRUCTEx 是结构的指针。
pBaseBuf 为地址整数,
nBufSize 为整数。
RCV_REPORT_STRUCTEx 是结构,
PRCV_REPORT_STRUCTEx 是结构的指针。
pBaseBuf 为地址整数,
nBufSize 为整数。
解决方案 »
- 超级郁闷无法安装VS 2005 SP1
- 怎样将使用过inet_addr()函数的IP地址再次转换成字符串型? VC/MFC / 网络编程
- 内存泄漏的问题,高手请帮忙!!
- pMenu->EnableMenuItem (IDC_ADF,MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);想使采单项无效,怎么没反应呢?
- 工具提示ToolTipCtrl如何在按中MButton后弹出?
- 谁能够用socket把本地的一个文件目录完整的拷到另一台计算机
- 请看看错在哪里?怎么连接不上?
- 怎样在VC中插入一个位图呀
- 怎样设置打印方向?
- 哪位知道Spy++的用法,最好是中文的,详细点
- 我想在程序中,设置程序本身在计算机启动时启动,怎么做?
- 怎么实现常见的选择文件时的“打开文件对话框”的功能?(MFC)
{
...
} RCV_REPORT_STRUCTEx, *PRCV_REPORT_STRUCTEx, *LPRCV_REPORT_STRUCTEx;...
void Fun1()
{
RCV_REPORT_STRUCTEx abc[300];
Init(abc,300);
...
}...
BOOL Init(void* pBaseBuf , int nCount)
{int nBufSize = sizeof(pRCV_REPORT_STRUCTEx);
...
for (int n=0; n<nCount; n++)
{
RCV_REPORT_STRUCTEx & Buf = *(PRCV_REPORT_STRUCTEx)(pBaseBuf + nBufSize*i );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buf.member = ...
if (xxx)
return FALSE;
}
return TRUE;
}
是否将pBaseBuf中的内容复制到了Buf中,还是仅仅将Buf指向了pBaseBuf的地址?
能让我来说说我的看法吗?
正如问题中所示,RCV_REPORT_STRUCTEx 是个结构。如果我有一系列这样的结构,为了方便引用,就定义一个这种结构的数组,如
int nBufSize = sizeof(RCV_REPORT_STRUCTEx); // 将大小保存在pBufSize中
RCV_REPORT_STRUCTEx *pBaseBuf = (RCV_REPORT_STRUCTEx *)malloc(nBufSize * N);
之后,如果你想引用这个RCV_REPORT_STRUCTEx 数组中第i个内容的话,你就可以这样:
RCV_REPORT_STRUCTEx Buf = pBaseBuf[i];
即,RCV_REPORT_STRUCTEx Buf = *(pBaseBuf + nBufSize * i);
如果为了安全引用,则可以用你所列的那样:
RCV_REPORT_STRUCTEx & Buf = *(pBaseBuf + nBufSize * i);
不知道这样用中文而不是代码解释得对不对?
更不知道你现在知道了吗?
RCV_REPORT_STRUCTEx & Buf就不懂了。同样, *(pBaseBuf + nBufSize * i) 是什么东东也不明白。
RCV_REPORT_STRUCTEx Buf = pBaseBuf[i];
和
RCV_REPORT_STRUCTEx Buf = *(pBaseBuf + nBufSize * i);
及
RCV_REPORT_STRUCTEx & Buf = *(pBaseBuf + nBufSize * i);
有什么区别?为什么要用最后一种呢?
RCV_REPORT_STRUCTEx Buf = pBaseBuf[i];
RCV_REPORT_STRUCTEx Buf = *(pBaseBuf + nBufSize * i); //是赋值
及
RCV_REPORT_STRUCTEx & Buf = *(pBaseBuf + nBufSize * i); //是引用,特别地pBaseBuf
//的类型可以是void*
//好传递BOOL Init(void* pBaseBuf , int nCount)
~~~~~~~~~~~~~~r u std?