Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу понять! Почему функция MessageBox принимает указатели, а мы передаем ей строки. / 6 сообщений из 6, страница 1 из 1
08.05.2014, 19:12
    #38637167
Eugene Ostenbaken
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять! Почему функция MessageBox принимает указатели, а мы передаем ей строки.
Да вот впрочем и весь вопрос.
Функция MessageBox во втором и третьем параметре ожидает указатели, но мы почему-то передаем строки и все работает.
int MessageBox
(
HWND hWnd, // дескриптор окна владельца
LPCTSTR lpText, // адрес текста в окне сообщений
LPCTSTR lpCaption, // адрес заголовка в окне сообщений
UINT uType // стиль окна сообщений
);

Я всегда думал что нужно что-то типа:
WCHAR sz1[] = L"111";
WCHAR sz2[] = L"222";

WCHAR * psz1 = &sz1[0];
WCHAR * psz2 = &sz2[0];
MessageBox((0,psz1,psz2,MB_OK); // Так работает.
Ну или так:
MessageBox((0,&sz1[0],&sz2[0],MB_OK); // Так тоже работает.

Но мы сразу передаем строку. Почему тоже работает?

Короче, чисто теоретический вопрос.
...
Рейтинг: 0 / 0
08.05.2014, 19:26
    #38637180
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять! Почему функция MessageBox принимает указатели, а мы передаем ей строки.
потому что psz2 и &sz2[0] это одно и тоже.

А писать проще так
Код: plaintext
1.
WCHAR * psz2 = sz2;
...
Рейтинг: 0 / 0
08.05.2014, 19:34
    #38637190
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять! Почему функция MessageBox принимает указатели, а мы передаем ей строки.
Eugene OstenbakenПочему тоже работает?
Массивы в С неявно приводятся к указателям.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.05.2014, 20:03
    #38637208
Eugene Ostenbaken
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять! Почему функция MessageBox принимает указатели, а мы передаем ей строки.
Всем спасибо. Вроде разобрался.
И как я понимаю, строка
WCHAR * psz2 = sz2;
тоже говорит о том, что указателю psz2 неявно присвоен указатель на нулевой (первый) элемент массива.
Правильно?
...
Рейтинг: 0 / 0
08.05.2014, 20:06
    #38637211
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять! Почему функция MessageBox принимает указатели, а мы передаем ей строки.
правильно
...
Рейтинг: 0 / 0
08.05.2014, 20:10
    #38637214
Eugene Ostenbaken
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять! Почему функция MessageBox принимает указатели, а мы передаем ей строки.
Dima T,

Ещё раз спасибо.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не могу понять! Почему функция MessageBox принимает указатели, а мы передаем ей строки. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]