打印出指针值

时间:2011-01-24 09:09:04

标签: c++ pointers mfc

我正在进行线程处理,但我不知道如何打印出指针值。

UINT __cdecl CThreadDlg::func(LPVOID pParam)
{
    data *ptr = (data*)pParam;
    AfxMessageBox(L"You have entered a thread function.");
    ptr->a = "abc12345";       // char * a
    AfxMessageBox(???);        // what should i put here to print out the value of a?

    return 0;
}

3 个答案:

答案 0 :(得分:3)

也许是这样的:

CString a;
a.Format(_T("%p"), ptr->a);
AfxMessageBox(a);

编辑:  得到价值'ptr-> a'指向:

a.Format(_T("%s), ptr->a);

答案 1 :(得分:1)

我相信

ptr->a

但这完全取决于AfxMessageBox API。

编辑:看起来AfxMessageBox需要一个LPCTSTR,它只是一个const char *。

LPCTSTR lpStr = (LPCTSTR)ptr->a;

如果您的编译器没有自动投射,这应该会有所帮助

答案 2 :(得分:1)

使用swprintf函数构建带有文本的C字符串,然后打印出来。考虑这个例子:

UINT __cdecl CThreadDlg::func(LPVOID pParam)
{
    data *ptr = (data*)pParam;
    AfxMessageBox(L"You have entered a thread function.");

    ptr->a = "abc12345";       // char * a

    wchar_t buf[ 1024 ];
    swprintf( buf, "ptr->a points to %p", ptr->a );
    AfxMessageBox(buf);        

    return 0;
}