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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2015, 15:50   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Универсальный указатель

Добрый день!

Решил указатель a привести к типу int.

Получил ошибку. Подскажите пожалуйста что не так ?

Код:
int main()
{
	
	void *a ;
	(int)a; 
	*a = 45; 
	cout << "\na = "<<a<<endl;
	getch();
     return 0;
}
RAFA91 вне форума Ответить с цитированием
Старый 26.08.2015, 15:59   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

В том и ошибка что зделали разыменование. Да и воидом, нельзя определять переменную. Короче, учитесь, мы поможем. Если кратко, то из ссылке зделали переменную, причём с неопределёнными координатами. Потом, пытаетесь записать 45 в уже не существующую переменую. Таких вольностей, си не прощает.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 26.08.2015 в 16:02.
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.08.2015, 16:05   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)привидения указателя тут нет. есть лишь пустая строка.
2)указатель никуда не указывает. то есть он не валиден, такие нет смысла использовать и они обычно ломают программу. или данные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.08.2015, 16:12   #4
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

Цитата:
Таких вольностей, си не прощает.
Ловит в подъезде и бьет, пока кричать не перестанете?
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
crazy horse вне форума Ответить с цитированием
Старый 26.08.2015, 16:15   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от crazy horse Посмотреть сообщение
Ловит в подъезде и бьет, пока кричать не перестанете?
А чё не так?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 26.08.2015, 16:31   #6
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
В том и ошибка т.
хотел настроить этот указатель на тип int

накидал тут малость

Код:
int main()
{
	int x = 23;

	void *a=&x ;
    
        cout << "\na = "<<a<<endl;
	getch();
     return 0;
}
вроде ошибок нет .

разыменование для универсальных указателей вообще делать можно ?

Код:
cout << "\na = "<<*a<<endl; //???????????????
RAFA91 вне форума Ответить с цитированием
Старый 26.08.2015, 16:47   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
разыменование для универсальных указателей вообще делать можно ?
и сколько памяти вам это разыменование должно вернуть?
p51x вне форума Ответить с цитированием
Старый 26.08.2015, 16:55   #8
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Код:
int x = 23;

	void *a=&x ;
от разыменования я жду получить число 23, а получаю шыш.

Код:
cout << "\nx = "<<*a<<endl;
хотя а указывает на адрес х
RAFA91 вне форума Ответить с цитированием
Старый 26.08.2015, 17:18   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
а получаю шыш.
И правильно - я не просто так задал вопрос. Когда вы разыменовываете указатель на инт, упрощенно вам возвращается блок памяти размером с инт. Сколько памяти должно вернутся с воида* ?

Цитата:
хотя а указывает на адрес х
Почему на х, а не на х1? или х1101? или хуух0010000001? или... ? как компилятор должен угадать?

Хотите - приводите.
p51x вне форума Ответить с цитированием
Старый 26.08.2015, 17:18   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,372
По умолчанию

Цитата:
Сообщение от RAFA91 Посмотреть сообщение
разыменование для универсальных указателей вообще делать можно ?
Нет, нет и еще раз нет.

Столь яростное выражение отрицания вызвано тем, что форум не позволяет ответить коротко и ясно - нет!
waleri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Универсальный поиск Beerik Microsoft Office Access 36 11.02.2013 15:30
Передать указатель на указатель в функцию erro Общие вопросы C/C++ 3 29.10.2012 17:59
Универсальный блокнот Klaf Общие вопросы Delphi 3 25.04.2012 19:44
Универсальный запрос Kostya777 Microsoft Office Access 2 17.11.2010 20:04
Универсальный парсер gamer123 Общие вопросы Delphi 20 10.08.2010 09:23