Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
 Аватар для dserp18
28 / 13 / 1
Регистрация: 20.01.2013
Сообщений: 145
Записей в блоге: 8

типы указателей Подбельский

20.07.2013, 22:01. Показов 4536. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пример из книжки Подбельского
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
#include <iomanip.h>
int main(){
   unsigned long L=0x12345678L;
   char *cp = (char *) &L;  
   int *ip = (int *) &L;
   long *lp = (long *) &L;
      cout<<hex;
      cout<<"Address L= "<<&L<<"\n"; 
      cout<<"cp= "<<(void *)cp<<"\t"; 
      cout<<"*cp= "<<(int) *cp<<"\n"; 
      cout<<"ip= "<<(void *)ip<<"\t"; 
      cout<<"*ip= "<< *ip<<"\n"; 
      cout<<"lp= "<<(void *)lp<<"\t"; 
      cout<<"*lp= "<<*lp<<"\n"; 
        }
должно выводиться
*cp=78
*ip=5678
*lp=12345678
но у меня выводится *ip=12345678, хотя указатель типа int должен вроде бы вмещать 2 байта. Тогда в чем же дело?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2013, 22:01
Ответы с готовыми решениями:

типы указателей
Помогите понять, что от меня хотят в этом задании: &quot;выбрать данные из памяти с помощью разных типов указателей (float, char)&quot;

Не получается преобразовать типы указателей на функцию
Доброго всем времени суток. Подскажите пожалуйста как сделать есть тип указателя на функцию. typedef void (*pfn_RawMouseOnLeftDown ...

Размер памяти для указателей имеющих различные типы
Объясните пожалуйста, почему размер памяти выходит разный Перепишите код и вывод на форум

32
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
22.07.2013, 18:25
Студворк — интернет-сервис помощи студентам
Да байт уже давно 8 бит и для тех старых компьютеров (и прочих устройств), у которых минимальная единица хранения была не 8 бит, эту самую единицу сейчас никто "просто" байтом не называет. Для любой памяти сейчас байт = 8 бит (а не 5-6-7-9-...) . Примеры из Википедии - исторические (или дайте ссылку на современные архитектуры, где байт не 8 бит).

Если в магазина указана цена 100 рублей, то это сегодняшних рублей, а не каких-то рублей за последние 100 лет.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
22.07.2013, 18:32
Цитата Сообщение от zer0mail Посмотреть сообщение
3. The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to contain
any member of the basic execution character set (2.3) and the eight-bit code units of the Unicode UTF-8
encoding form and is composed of a contiguous sequence of bits, the number of which is implementationdefined
Как-то ты видимо не дочитал до конца предложения, где написано "and is composed of a contiguous sequence of bits, the number of which is implementation defined"

Добавлено через 4 минуты
Цитата Сообщение от zer0mail Посмотреть сообщение
Примеры из Википедии - исторические
Какое отношение написанное в википедии имеет к тому, что написано в стандарте про размеры базовых типов?

Цитата Сообщение от zer0mail Посмотреть сообщение
(или дайте ссылку на современные архитектуры, где байт не 8 бит)
Neuro NM6403, Multicore. И ещё много других сигнальных процессоров.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
22.07.2013, 18:33
Цитата Сообщение от zer0mail Посмотреть сообщение
то это сегодняшних рублей
ценность которых может различаться в разных местах, хотя рубли одни и те же
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
22.07.2013, 18:37
И что - из конца предложения следует, что char может быть меньше 8 бит (ведь претензии были к цитате из Страуструпа "char не менее 8 бит")?

Цитата Сообщение от Croessmah Посмотреть сообщение
ценность которых может различаться в разных местах, хотя рубли одни и те же
Вот именно - рубли одни и же, я об этом а не о ценности (30 лет назад мегабайт памяти имел совсем другую ценность, но байтов содержал столько же).
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
22.07.2013, 19:27
Цитата Сообщение от zer0mail Посмотреть сообщение
едь претензии были к цитате из Страуструпа "char не менее 8 бит"
Претензии были к тому, что в стандарте размер типов описывается в байтах, а не битах. Я видел компилятор под сигнальный процессор, в котором sizeof(char)=sizeof(short)=sizeof(int)=1 байт, а 1 байт = 32 бита

Цитата Сообщение от zer0mail Посмотреть сообщение
Кроме того, гарантируется, что под char отводится минимум 8 бит,
под short или int — минимум 16 бит, под long — минимум 32 бита
Насколько я знаю, ничего такого стандарт не говорит

Добавлено через 3 минуты
Точнее, стандарт Си такого не говорит. А стандарт Си++ - хз
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
22.07.2013, 20:25
Ладно, пусть стандарт Си не говорит. А Страуструп - говорит. В конце концов мне важна истинность его утверждения, а не то, так ли она оформлена в стандарте (и вообще, оформлена ли она как-то).
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
22.07.2013, 20:52
Цитата Сообщение от zer0mail Посмотреть сообщение
А Страуструп - говорит
Если в стандарте Си++ по части размера базовых типов записано то же самое, что и в стандарте Си, значит Страуструп не прав де-юре, хотя с вероятностью 99.99% можно утверждать, что прав де-факто.

Тот факт, что в мире существует множество "кривых" (в понимании "стандартного" программиста) implementation-defined настроек ещё не говорит о том, что нужно заморачиваться и помнить о них. Но тем не менее нужно хотя бы понимать, что такие вещи в природе есть и не утверждать, что дескать размеры типов такие-то. Как минимум потому, что кого-то из начинающих это может ввести в заблуждение
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
22.07.2013, 21:03
Согласен - и поэтому считаю, что важнее знать де-факто и не заморачиваться вопросами типа: "а вдруг окажется, что int <16 бит (я же 3 года потратил на доскональное изучение стандарта и знаю, что он этого не запрещает) и тогда моя программа не будет работать?".
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
22.07.2013, 21:06
Цитата Сообщение от Evg Посмотреть сообщение
Кроме того, гарантируется, что под char отводится минимум 8 бит,
под short или int — минимум 16 бит, под long — минимум 32 бита
Насколько я знаю, ничего такого стандарт не говорит

Добавлено через 3 минуты
Точнее, стандарт Си такого не говорит. А стандарт Си++ - хз
Ещё как говорят. Оба.

C99: 5.2.4.2.1/1 + пункты про значащие биты целых типов

5.2.4.2.1 Sizes of integer types <limits.h>

The values given below <...> shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.

number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT 8

<...>

maximum value for an object of type unsigned int
UINT_MAX 65535 // 216 – 1

<...>

maximum value for an object of type unsigned long int
ULONG_MAX 4294967295 // 232 – 1
C++11: весь 18.3.2 + 18.3.3/2:

(сноски 18.3.2.4/1,4)
Equivalent to CHAR_MIN, SHRT_MIN, FLT_MIN, DBL_MIN, etc

Equivalent to CHAR_MAX, SHRT_MAX, FLT_MAX, DBL_MAX, etc.

<...>

18.3.3 C library

2 The contents are the same as the Standard C library header <limits.h>.
2
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
23.07.2013, 09:06
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
maximum value for an object of type unsigned int
UINT_MAX 65535 // 216 – 1
Тебе это не кажется ересью?

Добавлено через 1 минуту
А... дошло. Реально есть-таки минимальные ограничения

Добавлено через 9 часов 35 минут
Опять-таки чисто на всякий случай. Стандарт оперирует понятиями типа "максимальное значение", но не "битовый размер". Казалось бы, одно вытекает из другого. Но это при условии двоичных битов. Бит может иметь и другую размерность. Ранее уже создавались машины, работающие в троичной системе счисления. Сейчас такие навряд ли есть, но кто их знает. Если в светлом будущем схемотехника уйдёт в квантовую область, то так же есть шансы иметь машины с другой размерностью битов. Понятно, что тут уже на грани фантазий, но тем не менее стандарт в этом месте оперирует именно значениями, а не размерами
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
23.07.2013, 10:34
Цитата Сообщение от Evg Посмотреть сообщение
Казалось бы, одно вытекает из другого. Но это при условии двоичных битов. Бит может иметь и другую размерность.
Где-нибудь в другом месте, но не в Сишечке:
6.2.6 Representations of types
6.2.6.1 General

<...>

3 Values stored in unsigned bit-fields and objects of type unsigned char shall be represented using a pure binary notation.40)

4 Values stored in non-bit-field objects of any other object type consist of n × CHAR_BIT bits, where n is the size of an object of that type, in bytes.

<...>
______________

40) A positional representation for integers that uses the binary digits 0 and 1, in which the values represented by successive bits are additive, begin with 1, and are multiplied by successive integral powers of 2, except perhaps the bit with the highest position. (Adapted from the American National Dictionary for Information Processing Systems.) A byte contains CHAR_BIT bits, and the values of type unsigned char range from 0 to 2CHAR_BIT − 1.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
23.07.2013, 13:01
Мамочки родные... это в каком стандарте записано? В смысле как он закодирован (ISO 9899 и т.п.)?
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
23.07.2013, 22:01
Всё тот же C99. Не думаю, что в ANSI C что-то другое.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.07.2013, 22:01

Сериализация указателей на примитивные типы
Прошу пользователей пакета Serialization подсказать, что требуется добавить в код, чтобы можно было сериализовать данные через указатели на...

Создать массив указателей на функции к функциям, которые имеют разное число и типы параметров?
Можно ли создать массив указателей на функции к функциям, которые имеют разное число и типы параметров?

Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей?
Доброго времени суток! Рассматриваю пример (из Лафоре) сортировки массива указателей на объекты, для чего используются указатели на...

Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей
Задача: создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей. Вернуть адрес...

Объяснить различия в работе указателей на целое число и указателей на const char (строки в стиле Си)
Уважаемые программисты, возникло несколько вопросов касательно указателей. Почему при выводе указателя на int нужна звёздочка (*), а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru