FreeBasic
Главная
Вход
Регистрация
Понедельник, 30.12.2024, 19:46Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Учебник передача массива в функцию по значению
yandmlДата: Понедельник, 22.06.2015, 19:36 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Учебник раздел "Byval и Byref или снова о функциях" сказано что  строки передаются по ссылке, если это не то что надо по добавляем Byval.
Мои эксперименты со структурами и массивами показали что и там все передается по ссылке. Со структурой Byval прошел как надо а вот с массивом не получается.
Вот пример без Byval

Sub foo ( a() As UByte )
For i As UByte = 0 To 2
    a(i)=i*10
Next

End Sub
Dim a(2) As UByte={1,2,3}
For i As UByte = 0 To 2
    Print a(i)
Next
foo (a())
For i As UByte = 0 To 2
    Print a(i)
Next
sleep

Куда подставить Byval  что б всетаки добится передачи по значению?
Спасибо
 
haavДата: Понедельник, 22.06.2015, 21:15 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Массивы в FB всегда передаются только по ссылке (Byref). В реале , если очень нужно такое , можно реализовать вручную через временный динамический массив. То есть перед отправкой в процедуру, копируешь данные во временный массив, а перед выходом из процедуры его очищаешь.

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
yandmlДата: Понедельник, 22.06.2015, 21:34 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Ууу как жалко sad
Я так понимаю и константный массив создать тоже нельзя?
 
haavДата: Понедельник, 22.06.2015, 22:05 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата yandml ()
Я так понимаю и константный массив создать тоже нельзя?


То есть ? Массив, который инициализируется при объявлении и потом его ячейки изменить нельзя? Если это, то можно:

Dim i(5) As Const Integer = {0,1,2,3,4,5}


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
yandmlДата: Понедельник, 22.06.2015, 23:01 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 8
Репутация: 0
Статус: Offline
Спасибо
 
  • Страница 1 из 1
  • 1
Поиск: