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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2010, 14:31   #1
Angelic_fiend
Пользователь
 
Регистрация: 22.05.2010
Сообщений: 11
По умолчанию В чем ошибка?

Дан пример функции для обмена переменных a и b,
компилятор ругается на присвоение указателей.


void change (int *a,int *b)
{
int r;
r = *a; *a = *b; *b = r;
}

Посмотрите, может кто-то знает, в чем проблема.
Angelic_fiend вне форума Ответить с цитированием
Старый 02.06.2010, 14:35   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
компилятор ругается
Какой компилятор? Как ругается? Телепатов ждете?
p51x вне форума Ответить с цитированием
Старый 02.06.2010, 14:37   #3
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Кажется ты типы перепутал r - целое число, а *a,*b-адреса в памяти(указатели на ...)
Ol'ga_new вне форума Ответить с цитированием
Старый 02.06.2010, 14:39   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Ольга
(*a) это разименованный указатель.
значение int будет, в этом все верно, так что чдем ответа от ТС(вопросы выше)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.06.2010, 14:42   #5
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Точно, спасибо что напомнил
Может ошибка в вызове функции? Параметрами функции являются адреса, следовательно вызывать нужно с "&"

Последний раз редактировалось Ol'ga_new; 02.06.2010 в 14:48.
Ol'ga_new вне форума Ответить с цитированием
Старый 02.06.2010, 14:49   #6
Angelic_fiend
Пользователь
 
Регистрация: 22.05.2010
Сообщений: 11
По умолчанию

Компилятор пишет : "Invalid indirection" на строки
r = *a;
*a = *b;
*b = r;

Ol'ga_new, функцию я так и вызываю.

Последний раз редактировалось Angelic_fiend; 02.06.2010 в 14:52.
Angelic_fiend вне форума Ответить с цитированием
Старый 02.06.2010, 14:53   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

какой компилятор?
MS Visual C++?
попробуйте заключить выражения разименовывания в скобки.(*a)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.06.2010, 14:58   #8
Angelic_fiend
Пользователь
 
Регистрация: 22.05.2010
Сообщений: 11
По умолчанию

Пепел Феникса, Borland C++
К сожалению, заключение в скобки не помогает.
Angelic_fiend вне форума Ответить с цитированием
Старый 02.06.2010, 15:13   #9
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

http://www.citforum.ru/programming/bcpp/r74_6_3.shtml
Здесь пишут:
Операция обращения по ссылке (*) требует в качестве операнда непустого (не void) указателя.
Ol'ga_new вне форума Ответить с цитированием
Старый 02.06.2010, 15:39   #10
Angelic_fiend
Пользователь
 
Регистрация: 22.05.2010
Сообщений: 11
По умолчанию

Ol'ga_new, а на что нужно
Цитата:
не void
заменить?
Angelic_fiend вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка? Кинельски Общие вопросы Delphi 17 24.05.2010 23:08
В чем ошибка gheorge1989 Microsoft Office Access 8 27.10.2009 22:45
В чем ошибка? Smartbass Паскаль, Turbo Pascal, PascalABC.NET 1 28.05.2009 21:55
В ЧЕМ ОШИБКА? salmanbaz Общие вопросы C/C++ 5 11.01.2009 13:21
В чем ошибка? fosto Паскаль, Turbo Pascal, PascalABC.NET 3 07.12.2008 19:10