Re[5]: Пишу функции для обработки массивов на с++
От: AleksandrN Россия  
Дата: 17.10.20 23:52
Оценка:
Здравствуйте, Gaxis, Вы писали:

G>Что касается указателей то я и в начале темы написал про то что мои функции отрегулированы на стандартные типы данных, т.к. основная задача построить специфику, что уже даёт понять что может быть всякое, тут 2 варианта использовать типы данных которые будут помещать указатели что сделает код универсальным либо переписать типы из своей платформы.


Это я и имел в виду, когда писал про непонимание типов данных. Указатель — стандартный тип данный на C и C++.

А код
int Q=(int)new int[10];

и обёртки для работы с ним не универсальные и чреваты проблемами.

На 32-х разрядной системе сработает, но не уверен, что на всех платформах.
На 64-х разрядных потеряются 4 байта адреса и потом будет непонятно, где искать массив, под который выделена память.
На 16-разрядной (такие системы и сейчас встречаются, но узко-специализированные) сработает, но будет использоваться 2 лишних байта, а ресурсы у таких систем очень ограничены.

И, предыдущие 3 предложения, актуальные для наиболее распространённых платформ, но не уверен, что для всех.
Стандарт языка требует, что бы sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long), но не задаёт жёстко размеры типов. А размер указателя зависит от аппаратной платформы. А в некоторых случаях могут быть свои особенности, как например, было на i386 — там были ближний указатель и дальний, разного размера. И при приведении типов надо понимать, что делаешь, особенно при приведении указателя к целому типу.
Отредактировано 18.10.2020 0:08 AleksandrN . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.