Указатели и строки
Участников: 2
Страница 1 из 1
Указатели и строки
- Код:
Dim s As String
Dim a As String * 1
Dim ps As String Ptr
Dim i As Integer
s = "Hello, World"
ps = @s
a = *(ps + i)
Print a
Sleep
При i = 0 выводится первый символ (как оно и должно быть). Но при i <> 0:
При нечётных значениях i видим пустое консольное окошко и нормальное завершение
При чётных значениях i GDB выдаёт ошибку:
Program reseived signal SIGSEGV. Segmentation fault.
0x00401ce2 in fb_hStrCopy@12 ()
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 49
Откуда : Кишинёв, Республика Молдоа
Re: Указатели и строки
Правильным будет такой код:
Для получения указателя строки лучше использовать функцию StrPtr(), которая возвращает ZString Ptr
В случае использования @ или VarPtr будет возвращен адрес внутреннего дескриптора строки, как написано в документации по функции StrPtr(). Там же есть пару примеров.
Советую еще посмотреть тему https://freebasic.forum2x2.ru/forum-f5/tema-t37.htm
- Код:
Dim s As String
Dim a As String *1
Dim ps As zstring Ptr
Dim i As Integer
s = "Hello, World"
ps = strptr( s )
a = *(ps+i)
Print a
Sleep
Для получения указателя строки лучше использовать функцию StrPtr(), которая возвращает ZString Ptr
В случае использования @ или VarPtr будет возвращен адрес внутреннего дескриптора строки, как написано в документации по функции StrPtr(). Там же есть пару примеров.
Советую еще посмотреть тему https://freebasic.forum2x2.ru/forum-f5/tema-t37.htm
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|