52 / 11 / 5
Регистрация: 29.10.2013
Сообщений: 102

Непонятки с указателем типа void*

18.07.2014, 19:47. Показов 2743. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Имеем следующий, редко используемый в быту нормальных программистов, код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main() {
    int a = 0x11223344;
    char c = 0x77;     // or 0x88
    void *b = &a;
 
    printf("%p %p %p %p\n", *((char*)b + 3), *((char*)b + 2), *((char*)b + 1), *(char*)b);
 
    *((char*)b + 2) = c;
 
    printf("%p %p %p %p\n", *((char*)b + 3), *((char*)b + 2), *((char*)b + 1), *(char*)b);
 
    getchar();
    return 0;
}
Если c = 0x77
00000011 00000022 00000033 00000044
00000011 00000077 00000033 00000044
Если c = 0x88
00000011 00000022 00000033 00000044
00000011 FFFFFF88 00000033 00000044
Что мною упущено в теории, что так происходит при разных значениях "char c" ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.07.2014, 19:47
Ответы с готовыми решениями:

System.Void из C# использоваться не может - для получения объекта типа void используйте typeof (void)
Изучаю с# по &quot;Шилдт Г. - C# 4.0 полное руководство&quot; При изучении конструктора возникла проблема: попытался запустить код на стр. 169, а...

Переделать функцию c указателем на int, на функцию с указателем на void
Есть рабочий код qsort для int: void qsort(int *base, int n) { // Прекратить если количество элементов меньше либо равно единице....

Работа с указателем на void *
Добрый всем день. Помогите пожалуйста вот по какому вопросу. Имеется некая функция: void* str_replace( const char str ) { ...

20
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
19.07.2014, 15:08
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ValeryS Посмотреть сообщение
как раз играет, в данном случае
при беззнаковый при приведении FF будет 255 0x000000ff
а при знаковой -1 0xffffffff
а %x ( в таком вот виде) отбрасывает незначащие 0
Я объяснял, что %x читает 4 байта независимо от того, char или unsigned char ты подаёшь (см. твою цитату в моём посте N14). Видимо, я не правильно понял слово "выдаёт".

Если я правильно понимаю слово "выдаёт", то печать %p не имеет строгого стандарта, указатели в разных системах печатаются в разном формате. Если посмотреть на примеры из поста N10, то видно, что на linux и windows при печати указателя в начале печатается 0x, а на solaris'е - нет. Точно так же наличие лидирующих нулей в печати %p - это архитектурно-зависимая вещь и зависит от реализации библиотеки. А вот отсутствие лидирующих нулей в печати %x - вроде бы как в стандарте описано, хотя на 100% не уверен. При этом надо чётко понимать, что конкретное значение в стек кладёт компилятор в точке вызова printf'а а значение уже зависит от того, выполнилось преобразование sint8->sint32 или uint8->sint32
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2014, 15:08

Функция с указателем на void** не получается вернуть данные?
Здорова! Есть код: #include &lt;iostream&gt; using std::cout; struct IMotion { virtual int&amp; get_val()=0; };

Указатели на функцию. Задача 2: функция предикат с void указателем
Сумму элементов массива, лежащих в пределах (a &lt;b)

Объявлением типа данных с указателем
Есть ли какая-то функциональная разница между таким объявлением int* a; и таким int *a

Как вызвать из одного класса (для метода типа void) метод типа boolean другого класса?
ребят, только учусь и конечно, вопросов возникает много. ситуация вот в чем. есть массив. я должна найти в i-том элементе какую-то...

Массив массивов типа char является ли указателем на указатели?
Добрый день! Хочу обсудить одну тему. Есть массив строк- вложенный массив. char...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера 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
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru