Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
vhdk
Отправлено: 01 Августа, 2018 - 18:50:17
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2018  
Репутация: 0




Здравствуйте!
Разбираюсь с указателями. Не работает код. Ошибка в строке с комментарием //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#
}

(Отредактировано автором: 01 Августа, 2018 - 18:51:23)

 
 Top
Kibor
Отправлено: 01 Августа, 2018 - 19:17:28
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




С функции нельзя передавать указатели объявленные в параметрах
 
 Top
vhdk
Отправлено: 01 Августа, 2018 - 21:25:29
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2018  
Репутация: 0




Есть ли вообще способ передать массив xxx в функцию B через функцию A?

(Отредактировано автором: 01 Августа, 2018 - 21:25:59)

 
 Top
Kibor
Отправлено: 01 Августа, 2018 - 21:47:39
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




У вас массив глобальный.
он виден и так в функциях. зачем тут указатели??
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#
}
 
 Top
Zireael
Отправлено: 02 Августа, 2018 - 01:53:57
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Есть ли вообще способ передать массив 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; // присваиваем другое значение
}
 
 Top
vhdk
Отправлено: 02 Августа, 2018 - 14:13:02
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2018  
Репутация: 0




 Zireael пишет:

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

Да, то что надо! Спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by