关于指针的一种用法
来源:互联网 发布:钉钉办公软件下载 编辑:程序博客网 时间:2024/05/28 23:20
在看别人的程序时发现的
假定有两个函数A和B
在函数A中new BYTE[]一个数组,之后将这个数组的地址(new之后会产生这个数组的首地址)以参数的形式传递给函数B
在函数A结束时删掉这个动态申请的数组。
在函数A结束之前函数B由于被调用就开始执行
在函数B中可以用这个首地址以数组的方式(下标访问)来访问这块内存
示例如下:
void CALLBACK CBTHDlg::OnSerialRead(void *pOwner, BYTE *buf, DWORD buflen)//----------------------------函数A{BYTE *pRecvBuf = NULL;CBTHDlg *pThis = (CBTHDlg*)pOwner;pRecvBuf = new BYTE[256];ZeroMemory(pRecvBuf, 256);CopyMemory(pRecvBuf, buf, buflen);pThis->PostMessageW(WM_RECV_SERIAL_DATA, WPARAM(pRecvBuf), buflen);//首地址pRecvBuf以参数的形式传给函数Bdelete []pRecvBuf;pRecvBuf =NULL;}LONG CBTHDlg::OnRecvSerialData(WPARAM wParam, LPARAM lParam)//--------------------函数B{char *aRecv = (char *)wParam;CString strRecv = L"";static CString strRecv1 = L"";CEdit *pEdtRecv = (CEdit*)GetDlgItem(IDC_EDT_RECV);CButton* pBtnCheck = (CButton*)GetDlgItem(IDC_CHK_16);int state = pBtnCheck->GetCheck();if(state == 0){pEdtRecv->GetWindowTextW(strRecv1);strRecv = CString(aRecv);pEdtRecv->SetWindowTextW(strRecv1+strRecv);}else{int i;//strRecv = CString(aRecv);for(i = 0; i<lParam; i++){strRecv.Format(L"%x", aRecv[i]);//函数B中以数组下标的方式来访问这一块内存pEdtRecv->GetWindowTextW(strRecv1);pEdtRecv->SetWindowTextW(strRecv1+strRecv);}}delete[] aRecv;aRecv = NULL;return 0;}
- 关于指针的一种用法
- 函数指针的一种用法
- 指向指针的指针的一种用法
- 关于枚举的一种用法
- 关于指针的一些用法
- 关于双重指针的用法
- 关于一种宏的用法解释
- 关于分离线程的一种用法
- 关于GROUP BY 的一种用法
- 关于分离线程的一种用法
- 关于分离线程的一种用法
- 关于分离线程的一种用法
- 将0强转为指针的一种用法
- 关于void指针用法的一些疑虑
- C++/C 关于指针的基本用法
- 关于C语言指针的用法
- 关于extern指针和数组的用法
- 关于分离线程的一种用法(转)
- (转)BeginPath&EndPath
- ubuntu快捷键设置大全 [转]
- android gone vs invisible 区别
- JavaMail:利用Tomcat和浏览器解析邮件内容
- django内置模板过滤器
- 关于指针的一种用法
- JavaMail:在Web应用下完整接收、解析复杂邮件
- 如何访问Google网页?
- Python in Xcode 4
- [C#] 10进制转62进制,实现穷举指定位数的所有密码组合(暴力破解)
- Android应用测试:多数公司仅测试几十款机型
- Android之PreferenceActivity
- UILabel 的是非
- 有关inner on 和 left join..on left outer...on的区别