ZString является массивом фиксированного размера символов
С-стиля. Он не имеет дескриптор и его длина рассчитывается быстрее при
передаче его в качестве аргумента функции. Когда переменная имеет
фиксированный размер, FreeBASIC позволяет избежать переполнения, которое
может возникнуть при присваивании, путем усечения длины
size - 1.
ZString Ptr может указывать на
стандартную
ZString, также может быть использован для
реализации "управляемого пользователем"
ZString, в этом
случае
Allocate/
Reallocate/
Deallocate
должны быть использованы для
выделения
памяти-перераспределения памяти-освобождения памяти пользователем,
чтобы избежать переполнения .
Конец строки отмечен нулевым символом (0 ASCII). Он автоматически
добавляется в FreeBASIC для функций работы со строками. Символ нуля будет
добавлен, когда строка создается, а длина будет рассчитываться путем
сканирования строки для первого нулевого символа. Нулевой символ (т.е.,
Chr(0))
не может содержаться в тексте
ZString , в противном случае
остальная часть строки будет усечена.
В
ZString,
Len
возвращает размер содержащейся строки , а
SizeOf
возвращает пространство, выделенное для
ZString.
SizeOf
работает, только если размер известен компилятору, т.е. фиксированного
размера
ZString переменная передается непосредственно, а не
как разыменованный указатель или аргумент функции, переданный по
ByRef.
Этот тип предназначен для простоты с интерфейсом C библиотек и также
заменяет строки фиксированной длины, которые не могут управляться с помощью
указателей. Любые внутренние строковые функции, такие как
Left
будут работать с
ZString также как и любой строковой
оператор.
Dim As ZString * 13 str1 => "hello, world"
Print str1
Print Len(str1) 'Возвращает
12, длина строки
Print SizeOf(str1) 'Возвращает
13, размер переменной
Dim As ZString Ptr str2
str2 = Allocate( 13 )
*str2 = "hello, world"
Print *str2
Print Len(*str2) 'Возвращает
12, длина строки
Print SizeOf(*str2) 'возвращает
0, потому что разыменованный указатель передается, а не переменная
См. также