Новые книги

В парадигме социального конструктивизма анализируются социологические, когнитивные и психологические механизмы и стратегии коммуникационного менеджмента как дискурсивного обеспечения стратегической деятельности влиятельных акторов. Изложенный материал соответствует программам направлений «Политология», «Государственное и муниципальное управление», «Реклама и связи с общественностью», «Журналистика».

Для научных работников, аспирантов, магистрантов, слушателей институтов повышения квалификации и профессиональной переподготовки, а также для менеджеров по связям с общественностью, маркетологов и политтехнологов.
Курс лекций, включенных в брошюру, знакомит читателя с популярными свободными программами и системами, полезными при преподавании информатики в средней школе. В обзор вошли основы открытых операционных систем, сведения о пакете «офисных» программ OpenOffice.org, коммуникационном пакете Mozilla, графическом редакторе GIMP, современных графических средах GNOME и KDE и других программах.

Для преподавателей информатики и методистов, а также для студентов и аспирантов соответствующих специальностей.

© 2002-3, Максим Отставнов.

© 2002, Андрей Добровольский (раздел 3.1).

Использован текст лекций, публиковавшихся автором в приложении к газете «Первое сентября» «Информатика» в 2002-3 г., материалы брошюры «Прикладные свободные программы в школе» (М.: 2003 г.), а также фрагменты статей, ранее публиковавшихся в журналах «Компьютерра» и «Домашний компьютер».

Строки

Учебник РНР
НазадГлава 34. Создание Переменных Вперёд

Строки

Для работы со строками потребуется несколько больше усилий. Как указывалось ранее, все строки, которые будут ассоциированы с структурами внутренних данных Zend, должны быть ассоциированы с использованием собственных функций менеджмента памяти Zend. Ссылки на статические строки или строки, размещённые стандартными способами, не допускаются. Для присвоения строк вы должны получить доступ к структуре str в контейнере zval.value. Соответствующий тип это IS_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);

new_string->type = IS_STRING;
new_string->value.str.len = strlen(string_contents);
new_string->value.str.val = estrdup(string_contents);

Обратите внимание на использование estrdup() Zend'а. Конечно, вы можете также использовать предопределённый макрос ZVAL_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);
ZVAL_STRING(new_string, string_contents, 1);

ZVAL_STRING принимает третий параметр, который указывает, должно ли содержимое строки дублироваться (с использованием estrdup()). Установка этого параметра 1 вызывает дублирование строки; 0 просто использует предоставляемый указатель на содержимое переменной. Этот особенно применимо, если вы хотите создать новую переменную, ссылающуюся на строку, которая уже размещена во внутренней памяти Zend.

Если вы хотите отсечь стоку, начиная с определённой позиции, или уже знаете её длину, вы можете использовать ZVAL_STRINGL(zval, string, length, duplicate), который принимает длину строки как установленную для новой строки. Этот макрос быстрее, чем ZVAL_STRING, и работает безопасно в двоичном режиме.

Для создания пустых строк установите длину строки 0 и используйте empty_string как содержимое:

new_string->type = IS_STRING;
new_string->value.str.len = 0;
new_string->value.str.val = empty_string;

Конечно, для этого также имеется макрос (ZVAL_EMPTY_STRING):

MAKE_STD_ZVAL(new_string);
ZVAL_EMPTY_STRING(new_string);

Назад Оглавление Вперёд
Double (Float) Вверх Булевы