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

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

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

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

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

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

хм никак не соображу как сделать такую простенькую задачу

набросал такой код .собственно и так понятно что он не правильный
в 8й строке и речи не идет о присвоении адреса указателю lenght_one[i]
как впрочем и в 9й :D

никак не соображу как с помощью одного временного указателя (unsigned short *lenght_tmp) сделать эту перестановку
я уже компилятор замучал до смерти .

может есть какие нибудь подсказки для меня ?
Код:
1	for(short i=0;i<=num_of_union;i++)
2	{
3		if(lenght_one[i]<lenght_two[i])
4		{
5			unsigned short *lenght_tmp;
6			
7			lenght_tmp=&lenght_one[i];
8			lenght_one[i]=lenght_two[i];
9			lenght_two[i]=*lenght_tmp;
10		}
        ......
        .....
dasvex вне форума Ответить с цитированием
Старый 08.09.2011, 07:16   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

надо обменять a и b с помощью p
Код:
p = a;
a = b;
b = p;
А чтобы подсказать в вашем коде нужно знать типы участвующих переменных.
p51x вне форума Ответить с цитированием
Старый 08.09.2011, 13:10   #3
dasvex
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 39
По умолчанию

эти 2 указателя обьявлены в классе так
Код:
class A :
{
public:
	....
private:
	.....
	unsigned short *lenght_one;
	unsigned short *lenght_two;
        ....
};
в этой функции присваиваю им значения
Код:
        ...
        size=10;
	lenght_one =new unsigned short [size];
	lenght_two =new unsigned short [size];

for(short i=0;i<10;i++)
{	
        unsigned short lenght1,lenght2;
	lenght1=p[i][0]->get_lenght();
	lenght2=p[i][1]->get_lenght();
	lenght_one[i]=lenght1;
	lenght_two[i]=lenght2;
        ....
}
dasvex вне форума Ответить с цитированием
Старый 08.09.2011, 13:23   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Код:
unsigned short *lenght_temp;

lenght_temp = lenght_one;
lenght_one = lenght_two;
lenght_two = lenght_temp;
p51x вне форума Ответить с цитированием
Старый 08.09.2011, 13:31   #5
dasvex
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 39
По умолчанию

в том то и дело что мне нужно получить адрес не lenght_one и lenght_two
а адреса lenght_one[i] и lenght_two[i]
dasvex вне форума Ответить с цитированием
Старый 08.09.2011, 14:25   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Так начнем сначала.

Цитата:
указателю lenght_one[i]
Не указатель.

Код:
unsigned short lenght_temp;

lenght_temp = lenght_one[i];
lenght_one[i] = lenght_two[i];
lenght_two[i] = lenght_temp;
p51x вне форума Ответить с цитированием
Старый 08.09.2011, 19:28   #7
dasvex
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 39
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Так начнем сначала.
Не указатель.
тааааак. что-то я совсем запутался . почему не указатель ?
Код:
unsigned short *lenght_one        // создаю указатель типа инсигнед шорт
size=10;
lenght_one =new unsigned short [size]; //выделяю память для 10 указателей .
//таким образом я имею 10 указателей lenght_one[i]    (где i >=0 , i<10)
//и каждый lenght_one[i] и меет свой адрес .
все верно ? или где то в голове белая дырища с пометкой "указатели" ?

Последний раз редактировалось dasvex; 08.09.2011 в 19:30.
dasvex вне форума Ответить с цитированием
Старый 08.09.2011, 19:36   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
unsigned short [size]
это массив из size unsigned short.
Цитата:
unsigned short *lenght_one // создаю указатель типа инсигнед шорт
обьявляете указатель на unsigned short, он указывает на unsigned short, но не указатель на unsigned short.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.09.2011, 20:08   #9
dasvex
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
обьявляете указатель на unsigned short, он указывает на unsigned short, но не указатель на unsigned short.
загадочная фраза для меня 0_о

бррррр
Код:
unsigned short *lenght_one = new unsigned short [size];
ладно , значит это 1 указатель на массив из size элементов
обращаться к i-тому элементу массива я могу так:lenght_one[i]

смутно смутно припоминаю что в памяти массив расположен последовательно.
значит и доступ к i-тому элементу я получаю путем сложения
адреса указателя с i*sizeof(unsigned short), где указатель указывает на первый элемент массива (lenght_one[0])

рассуждения верны ?
dasvex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как связать 2 приложения друг с другом на c# ? kaljan775 C# (си шарп) 11 07.05.2011 00:43
Даны центры равномерно растущих кругов на плоскости. При столкновении друг с другом столкнувшиеся круги п napster1991 Помощь студентам 3 07.02.2011 21:54
Даны центры равномерно растущих кругов на плоскости. При столкновении друг с другом столкнувшиеся круги п napster1991 Помощь студентам 3 07.02.2011 20:02
поменять стиль адреса ячейки R2C3 на С2 alfa7 Microsoft Office Excel 2 09.01.2008 15:03