long lVal = 0L;
long *pVal = NULL;
pVal = &lVal;和long lVal = 0L;
long *pVal;
pVal = &lVal;为什么结果会不一样?或许用法本身有问题?

解决方案 »

  1.   

    执行结果啦,如果用long *pVal = NULL;则程序在使用过程中会error,而用long *pVal;则不会,想不通?
      

  2.   

    long *pData;
    long Data = 3L;
    pData = &Data;
    strtmp = _T("24, 24, 30");
    BSTR bCharacterSize;
    bCharacterSize = strtmp.AllocSysString();
    ::g_pPrinter->DirectIO(28L, pData, &bCharacterSize);
    ::SysFreeString(bCharacterSize);
    其中
    long XXX::DirectIO(long Command, long* pData, BSTR* pString)
    {
    long result;
    static BYTE parms[] =
    VTS_I4 VTS_PI4 VTS_PBSTR;
    InvokeHelper(0x24, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
    Command, pData, pString);
    return result;
    }
      

  3.   

    如果是
    long *pData = NULL;
    long Data = 3L;
    pData = &Data;
    则运行中就会报错
      

  4.   

    我也知道可以啊,但运行时,有时会出现那个windows 的错误提示,发送不发送的那个框
      

  5.   

    你直接用不行吗?为什么还要加个中间变量(pData)呢?
    long Data = 3L;
    strtmp = _T("24, 24, 30");
    BSTR bCharacterSize;
    bCharacterSize = strtmp.AllocSysString();
    ::g_pPrinter->DirectIO(28L, &Data, &bCharacterSize);
    ::SysFreeString(bCharacterSize);其中
    long XXX::DirectIO(long Command, long* pData, BSTR* pString)
    {
    long result;
    static BYTE parms[] =
    VTS_I4 VTS_PI4 VTS_PBSTR;
    InvokeHelper(0x24, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
    Command, pData, pString);
    return result;
    }