Форум программистов, компьютерный форум CyberForum.ru

Обязательно ли объявлять переменную для хранения адреса переменной как указатель? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разборка кода игры http://www.cyberforum.ru/cpp-beginners/thread1170598.html
Здравствуйте, скачал недавно игру, сделанную на с++. Хочу попробовать создать подобную, но не могу разобраться в коде. Могли бы вы закомментировать наиболее сложные моменты в коде, буду премного благодарен. TForm1 *Form1; Graphics::TBitmap*ShipPic; Graphics::TBitmap*InvadersPic; Graphics::TBitmap*BackScreen; TList*Invaders; int InvadersDirect; bool LEFT,RIGHT; float InvadersSpeed; int...
C++ Найти сумму четных элементов массива Пожалуйста помогите, найти сумму четных элементов массива. http://www.cyberforum.ru/cpp-beginners/thread1170591.html
C++ Аналог wctomb
Здравствуйте! Необходим аналог функции wctomb без использования функций библиотеки C\C++ и WinAPI. То есть, конвертация строки wchar_t в char. Помогите пожалуйста с реализацией.
C++ Вывод случайного массива, вылетает программа
Программа генерирует случайный двумерный массив, выводит его в файл, потом читает и выводит на экран из этого файла. При нажатии клавиши 2 в меню программа пишет "Прекращена работа программы". Заранее спасибо за помощь. #include <iostream> //библиотека ввода/вывода #include <windows.h> //установка команд операционной системы #include <fstream> ...
C++ Кодировка чтения файла http://www.cyberforum.ru/cpp-beginners/thread1170552.html
Здравствуйте, форумчане! Возникла небольшая прроблемка.. Читаю данные из файла: #include <iostream> #include <vector> #include <fstream>
C++ Ошибка pow:DOMAIN error в написании функции Бесселя первого рода нулевого порядка Доброго времени суток)) Необходимо записать функцию Бесселя первого рода нулевого порядка. Записала, вроде как, по формуле.. с помощью знакопеременного ряда, но при компиляции пишет: pow: DOMAIN error , может кто-нибудь встречался с похожим, или может я, что упустила в коде?? Заранее спасибо)) int Fkt(int b) { int f = 1; for (int i = 1; i <= b; i++) f *= i; return(f) ; } double... подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.05.2014, 08:18     Обязательно ли объявлять переменную для хранения адреса переменной как указатель?
Цитата Сообщение от Tulosba Посмотреть сообщение
типа size_t может не хватить для представления адреса.
Это где же я такое написал то? Изначально предлагался long int, вот его и может не хватить, если вдруг адрес будет 128-ми битным, а long int останется 64-х битным. И даже long long int - не выход, если адрес вдруг станет 256-ти битным. Виртуальные адреса могут иметь любую разрядность, ни как не связанную с объёмом физической памяти и даже превосходить двоичный логарифм реально доступного объёма памяти на множитель в виде любой степени двойки и единственный не указательный тип, разрядность которого гарантировано достаточна для представления адреса - это как раз size_t, так как это платформенно-зависимый тип, разрядность которого растёт вместе с разрядностью адреса.

Добавлено через 8 минут
Что касается вопроса в названии темы, переменную для использования в качестве указателя можно декларировать не указательного типа. Но при всяком её использовании понадобится приведение типа: при присваивании ей значения приведение указателя к её типу, а при обращении по адресу явное приведение самой переменной к указателю. Это дополнительные синтаксические сложности, вызванные тем, что единственная сущность, для которой разрешён синтаксис, за которым скрывается необходимая для обращения по адресу косвенная адресация, - это указатель. Всё остальное адрес может только хранить, да и то ровно один тип гарантирует, что в него влезет весь адрес - size_t, остальные могут оказаться пригодными лишь для хранения части адреса, например, приращения в 256-ти байтном параграфе (char и uint8_t при адресации по смещению каждого байта).

Добавлено через 1 минуту
Тем не менее, часть адреса можно хранить в переменной любого типа, вопрос лишь в том, какую именно часть адреса можно хранить в переменной каждого типа. Можно даже поизвращаться и хранить весь адрес в строке, количество символов которой уравнять с sizeof(size_t).

Добавлено через 6 минут

Limit of size_t:

{SIZE_MAX}
65535
Это в 16-ти битных версиях. У меня 32-х битный компилятор, под ним 4294967296.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru