nixp.ru v3.0

24 мая 2017,
среда,
20:34:19 MSK

DevOps с компанией «Флант»
t3st3r написал 12 декабря 2006 года в 18:33 (412 просмотра) Ведет себя неопределенно; открыл 11 тем в форуме, оставил 14 комментариев на сайте.

Hi2All, кто может объяснить…

LPTSTR lpszCompName, lpszUserName; DWORD cchBuff = 256;

TCHAR tchBuffer[100]; lpszUserName = tchBuffer; // вот здесь зачем присваивать неинициализированную переменную?

lpszCompName = tchBuffer; // и здесь?

metal

LPTSTR — это обычно указатель, а он должен на что-то реальное указывать.

Code Monkey

указывает на char массив. штука вполне себе определенная.

Feuerbach
t3st3r
TCHAR tchBuffer[100]; lpszUserName = tchBuffer; // вот здесь зачем присваивать неинициализированную переменную?

lpszCompName = tchBuffer; // и здесь?

Она инициализирована. Почувствуй разницу между tchBuffer и *tchBuffer.

Если не чувствуешь — гоу читать книжки.

Code Monkey

Берем Кернигана, читаем: «Имя массива является синонимом местоположения его первого элемента….», думаем…

В данном случае, lpszUserName LPTSTR — ИМХО указатель на TCHAR. таким образом ИМХО все правильно. правда другой вопрос в том, что находится в этом массиве на момент его инициализации… там могут быть нули и потом это используется для проверки… но может быть и мусор. Я не помню как себя ведет компилятор при инициализации массивов.

metal

В массиве мусор, часто это нули. Забивать массивы нулями по умолчанию слишком не эффективно, если нужны нули, то надо делать memset.