Григорьев Антон Борисович
Шрифт:
Если посмотреть описание функций API, имеющих строковые параметры, в справке, можно заметить, что в некоторых случаях строковые параметры имеют тип
В первом варианте компилятор размещает строковый литерал в сегменте кода, а в функцию передает указатель на эту область памяти. Поскольку функция не модифицирует строку, а только читает, передача такого указателя не вызывает проблем.
Во втором варианте функции передается указатель, хранящийся в переменной
Вычисление строковых выражений требует перераспределения памяти, а это компилятор делает только с выражениями типа string. Поэтому результат выражения, приведенного в третьем варианте, также имеет тип
Параметры типа
Таким образом, перед программой встает задача узнать, какой объем памяти следует выделить под возвращаемую строку. Здесь API не предлагает универсального решения, разные функции по-разному решают эту проблему. Например, при получении заголовка окна с помощью
Выделять буфер для получения строки можно многими способами. На практике удобнее всего статические массивы, тип
Статические массивы могут использоваться, если размер буфера известен на этапе компиляции. Массивы типа
Строки типа