Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Проблема с указателями

Страниц (1): [1]
 

1. vhdk - 01 Августа, 2018 - 10:50:17 - перейти к сообщению
Здравствуйте!
Разбираюсь с указателями. Не работает код. Ошибка в строке с комментарием //messagebox #B#.
CODE:

int xxx[2];
xxx[0] = 333;
xxx[1] = 666;

A(#xxx[0]);

function A(int #xxx)
{
messagebox("#A# xxx[1] = " + format(xxx[1])); //messagebox #A#
B(#xxx[0]);
}

function B(int #xxx)
{
messagebox("#B# xxx[1] = " + format(xxx[1])); //messagebox #B#
}
2. Kibor - 01 Августа, 2018 - 11:17:28 - перейти к сообщению
С функции нельзя передавать указатели объявленные в параметрах
3. vhdk - 01 Августа, 2018 - 13:25:29 - перейти к сообщению
Есть ли вообще способ передать массив xxx в функцию B через функцию A?
4. Kibor - 01 Августа, 2018 - 13:47:39 - перейти к сообщению
У вас массив глобальный.
он виден и так в функциях. зачем тут указатели??
CODE:
int xxx[2];
xxx[0] = 111;
xxx[1] = 222;

A();

function A()
{
messagebox("xxx[1] = " + format(xxx[1])); //messagebox #A#
B();
}

function B()
{
messagebox("xxx[0] = " + format(xxx[0])); //messagebox #B#
}
5. Zireael - 01 Августа, 2018 - 17:53:57 - перейти к сообщению
 Цитата:
Есть ли вообще способ передать массив xxx в функцию B через функцию A?

Если очень хочется, то можно в функции A копировать переданный массив и уже его передавать в функцию B.
CODE:
int xxx[3];
xxx[0] = 333;
xxx[1] = 666;
xxx[2] = 777;

A(#xxx[0], 3); // передаём указатель на массив и размер массива
messagebox("#A# xxx[1] = " + format(xxx[1]));

function A(int #x1, int size_array)
{
new int temp[size_array]; // объявляем временный массив
for(int i=0; i<size_array; i++)temp[i]=x1[i]; // копируем в temp x1
B(#temp[0]); // передаём в функцию временный массив
for(i=0; i<size_array; i++)x1[i]=temp[i]; // копируем в x1 temp
delete temp; // удаляем временный массив
}

function B(int #x2)
{
messagebox("#B# x2[1] = " + format(x2[1]));
x2[1]=12345; // присваиваем другое значение
}
6. vhdk - 02 Августа, 2018 - 06:13:02 - перейти к сообщению
 Zireael пишет:

Если очень хочется, то можно в функции A копировать переданный массив и уже его передавать в функцию B.

Да, то что надо! Спасибо!

Powered by ExBB FM 1.0 Final