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

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

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

> Без описания
Kibor
Отправлено: 04 Декабря, 2018 - 21:56:49
Post Id



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


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




Доработал.
Стало возможно не ограниченное использование указателей Кибор #
Теперь можно передавать указатели на указатели в вложенные функции.

Поясняющий пример когда нельзя обойтись без указателей, так как функция fun2 не знает с какой переменной работать будет и глобальную переменную там использовать нельзя:
CODE:
int a;
fun1(#a, 5);
messagebox (a);
int b;
fun1(#b, 7);
messagebox (b);

function fun1(int #a1, int t)
{
a1=t;
fun2(#a1);//Передаем указатель на переменную a, так как переменная a1 это и есть переменная a, поскольку a1 это указатель на a
}


function fun2(int #a2)
{
a2=a2+2;
}


еще:
CODE:
int x=55, y;
int Image[5][30][30];
loadimage (#Image[0][0][0], "C:\Image_0.bmp");
loadimage (#Image[1][0][0], "C:\Image_1.bmp");
sleep(500);
int tt=2;
ss(#Image[0][0][0], #x, #tt);

function ss(int #b, int #xx, int #r)
{
for (int n=0; n<r; n++)
{
findimage(1, #b[n][0][0], -1, #xx, #y, 0, 0, 1000, 568, -1);
messagebox (xx);
}

dd(#b[0][0][0], #xx, r);
}


function dd(int #w, int #xxx, int k)
{
messagebox (k);

xxx=55;

for (int n=0; n<k; n++)
{
messagebox (findimage(1, #w[n][0][0], -1, #xxx, #y, 0, 0, 1000, 568, -1));
}
}
 
 Top
Skycrew
Отправлено: 05 Декабря, 2018 - 11:16:35
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 123
Дата рег-ции: Июль 2014  
Репутация: 0




Разъяснить бы поподробнее, как можно использовать это нововведение..
Пока я понял, что это позволяет искать картинку по указателю на ее массив..
 
 Top
Kibor
Отправлено: 05 Декабря, 2018 - 11:55:46
Post Id



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


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




 Skycrew пишет:
это позволяет искать картинку по указателю на ее массив

Не только.
Это позволяет манипулировать данными, указатели на которые были переданы в первую функцию в других функциях (которые вызываются из первой) не прибегая к глобальным переменным. Или их не всегда можно использовать.

До этого можно было использовать указатели только для одной функции. А с нее уже в другую нельзя было передавать указатели на принятые указатели.

Пример. В функциях не используются глобальные переменные a[] и n
Работа с ними идет только через указатели. Указатели в параметрах функций fun1 и fun2 не обязательно должны иметь разные названия.
CODE:
int a[200];
int n;


n=rand(0, 200);
fun1(#a[0], #n);
messagebox (a[n]);


function fun1(int #a1, int #n1);
{
//Тут мы что то делаем с перменной a[n] (по указателю на нее a1)
a1[n1]=5;
//Тут нам надо с переменной a[n] что то сделать в другой функции.
//Поэтому передаем во вторую функцию указатель на указатель на массив переменных a
fun2(#a1[0], #n1);
}


function fun2(int #a2, int #n2);
{
a2[n2]=a2[n2]+2;
}
 
 Top
Skycrew
Отправлено: 06 Декабря, 2018 - 11:36:41
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 123
Дата рег-ции: Июль 2014  
Репутация: 0




А почему работать с указателями лучше, чем с глобальными переменными напрямую?
 
 Top
Kibor
Отправлено: 06 Декабря, 2018 - 11:44:37
Post Id



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


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




С ними не лучше работать.
Просто бывают моменты, когда функции которые вызываются с первой функции не знают с какой именно переменной будут работать, как в примере выше. Поэтому она должна работать с переменной, с которой работала функция ее вызвавшая.
То есть функция fun2 работает с той же переменной что функция fun1
Синхронизировать это можно только с помощью указателей на одну и ту же переменную.
Так как в функции fun2 нельзя указать работу с конкретной глобальной переменной, так как она зависит от того с чем работает fun1.
 
 Top
Skycrew
Отправлено: 06 Декабря, 2018 - 12:52:28
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 123
Дата рег-ции: Июль 2014  
Репутация: 0




 Kibor пишет:
С ними не лучше работать.
Просто бывают моменты, когда функции которые вызываются с первой функции не знают с какой именно переменной будут работать, как в примере выше. Поэтому она должна работать с переменной, с которой работала функция ее вызвавшая.
То есть функция fun2 работает с той же переменной что функция fun1
Синхронизировать это можно только с помощью указателей на одну и ту же переменную.
Так как в функции fun2 нельзя указать работу с конкретной глобальной переменной, так как она зависит от того с чем работает fun1.


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


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




Powered by