Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2011, 07:47   #1
dasvex
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 39
По умолчанию передача в функцию указателя на начало массива

ох както даже стыдно )) вроде все просто , но не выходит
может потому что уже почти 7 утра а я еше не спал


один из методов класса возвращает начало массива:
Код:

unsigned short* Five_pos::get_active_pos()
{
unsigned short act[5][2];
	for(short i=4;i>=0;i--)
	{
        ..............
     ........ 
       }

return &act[0][0];
}
вот кусок функции мэин :ъ

Код:
			graphic *p_create_win=new graphic;	
			unsigned short *pos;
			pos=p[i]->get_active_pos();		
			p_create_win->set_winner_line(&pos[0],p_dc);
а вот и функция в которую я хочу передать указатель *pos на начало массива act

Код:
void graphic::set_winner_line(unsigned short* poss_data, CClientDC *dc)
{
		for (short i=0;i<8;i++)
		{
		x=poss_data[i];i++;
		y=poss_data[i];
		dc->MoveTo(15*x,15*y);
		dc->LineTo(15*x+15,15*y);
		

		}
}
я думал так : возвращаю из функции Five_pos::get_active_pos() адрес начала массива и присваиваю его указателю *pos.собственно теперь я могу вызывать члены массива arc
(short g = pos[8]; например проверенно , тут все нормально).а вот теперь этот указатель *pos
я хочу передать дальшев функцию void graphic::set_winner_line(unsigned short* poss_data, CClientDC *dc).передаю в нее адресс первого элемента на который указывает указатель *pos
и присваиваю его *poss_data.НО *poss_data имеет значение -5423 (ну или чтото такое примерно)

что то мне подсказывает что я получаю адрес указателя а не первого элемента (
подскажите пожалуйста где ошибка в передачи параметра ? и как ее исправить ?

заранее извиняюсь за изложение .. я уже ничерта не соображаю (

Последний раз редактировалось dasvex; 27.08.2011 в 07:48. Причина: еказатель :D
dasvex вне форума Ответить с цитированием
Старый 27.08.2011, 09:34   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
подскажите пожалуйста где ошибка
Код:
unsigned short act[5][2];
массив статический, память занимаемая им "освободится" после выхода из функции
p51x вне форума Ответить с цитированием
Старый 27.08.2011, 20:58   #3
dasvex
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 39
По умолчанию

да спасибо
думал об этом но меня смутило то что из функции мэин я мог получать значения массива act ,обьявленного локально в
unsigned short* Five_pos::get_active_pos()
dasvex вне форума Ответить с цитированием
Старый 28.08.2011, 03:59   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

массив статический ...

а теперь - правильный ответ (:

массив имеет локальное время жизни (automatic storage duration)

из функции мэин я мог получать значения массива act ,обьявленного локально в
unsigned short*


С++ не препятствует созданию кривизны (в отличие от Java/C#, где уже давно бы получил по рукам). вместо этого компилятор мстит быдло-программисту путем саботажа программы, вылетом в случайных местах и пр. :D
Rififi вне форума Ответить с цитированием
Старый 28.08.2011, 09:29   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
а теперь - правильный ответ (:

массив имеет локальное время жизни (automatic storage duration)
Поумничал?.. А теперь создай динамически массив и посмотри, когда он умрет.

Цитата:
вместо этого компилятор мстит быдло-программисту путем саботажа программы, вылетом в случайных местах и пр. :D
Ну да... Куча люди бьется над созданием ИИ, а стоит всего лишь взять компилятор... глупые людишки...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Произведение элементов массива в функции (передача массива в функцию) (Delphi) Toxa16 Помощь студентам 1 23.04.2011 04:42
Си++. Передача массива в функцию. Diamond2107 Помощь студентам 7 03.12.2009 20:15
Передача массива в функцию D[I]K Общие вопросы C/C++ 4 13.09.2009 21:31
передача массива в функцию JOFRIF Общие вопросы C/C++ 8 02.08.2009 12:46
Передача массива в функцию Vistar Общие вопросы C/C++ 1 27.04.2009 08:08