我正在编写以下代码
void MaskSensitiveData(TCHAR* szData,bool bEncryptAll)
{
szData = L"Test";
}
void CMFCTestDlg::OnBnClickedButton1()
{
TCHAR szTest[100] = L"This is a Password:myPass";
MaskSensitiveData(szTest,false);
AfxMessageBox(szTest);
}我期望MaskSensitiveData方法改变szTest,并将值传回给调用者。我看价值没有变。您能告诉我如何编辑调用函数中的值吗?
发布于 2022-10-13 22:32:59
在MaskSensitiveData()中,szData参数是通过值传递的,因此正在创建指针的副本,而在MaskSensitiveData()中分配给szData本身的任何新值都将分配给该副本,而不会反映回调用方的原始变量。
而且,这段代码甚至不应该编译,因为字符串文字是一个const字符数组(ie, L"Test"是一个const wchar_t[5]),它衰变为指针到const,但是szData是指针到非const,不允许指向const数据。
您需要将字符串文本的内容复制到szData所指向的内存中,例如:
void MaskSensitiveData(TCHAR* szData, int iDataLen, bool bEncryptAll)
{
_tcscpy_s(szData, iDataLen, TEXT("Test"));
}
void CMFCTestDlg::OnBnClickedButton1()
{
TCHAR szTest[100] = TEXT("This is a Password:myPass");
MaskSensitiveData(szTest, 100, false);
AfxMessageBox(szTest);
}https://stackoverflow.com/questions/74058025
复制相似问题