VC ++ Значение аргумента изменяется внутри функции при инициализации переменной функции - PullRequest
0 голосов
/ 09 мая 2018

Ниже приведен пример кода, с помощью которого я пытаюсь объяснить проблему:

Среда: VC ++ 2013 (Visual Studio) сборка исполняемого файла.

В функции main я инициализировал переменную и присвоил ей значение. После передачи переменной в другую функцию внутри этой функции я инициализирую другую переменную массива и устанавливаю для ее memset значение 0. Когда я это делаю, значения моего параметра также изменяются.

TCHAR == символ (многобайтовый)

void CallFoo(DWORD val){
  TCHAR sStr[256];   // val == 111
  memset(sStr, 0, sizeof(sStr)); // val == 0  --- Strange Very strange. 
  ....
}

int _tmain(int argc, _TCHAR* argv[]){
 DWORD dwValue = 111; 
 CallFoo(dwValue);
 ....
}

Пожалуйста, дайте мне знать, что я здесь делаю неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...