Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помомогите разобраться с указателями, Не получается понять выполнение кода 
:(
    Опции темы
avitec
Дата 15.4.2017, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.4.2017
Где: г.Киров

Репутация: нет
Всего: нет



Код

#include <stdio.h>
#include <windows.h>
#include <conio.h>

int main(void)
{
    int ival = 1024;
    int *pint; // указатель на объект типа int
    pint = &ival; // pint получает значение адреса ival

    
    printf("pint %x, ival %x\n",pint,ival);
    return 0;
}

после запуска программы, получаю вывод на экран pint 94, ival 3357. Почему в переменной ival оказалось 3357, если я задавал изначально 1024, если даже это число вышло в 16сс, то должно быть 400
И второе почему pint равно 94, ведь оперативная память записывается через сегмент и смещение например 2345:3456 что обозначает это 94 и в каком сегменте памяти оно находится. Код пишу во FreeDos в BorlandC++3.1 (не эмулятор, чистый FreeDos 1.2 на винте, адреса памяти по идее должны выходить реальные) Для тестирования программы использую turbo debugger 3.0 c дополнительным окном CPU просмотра памяти.

PM MAIL   Вверх
vpf
Дата 15.4.2017, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 14.11.2016
Где: Moscow

Репутация: нет
Всего: нет



Распечатайте в одной строке ival, в другой строке pint
Возможно 94:3357  это pint  а на ival не осталось места  %.
И наконец есть же симулятор, пройдитесь по шагам и сразу все станет ясно.

PM MAIL IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
avitec
Дата 15.4.2017, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.4.2017
Где: г.Киров

Репутация: нет
Всего: нет



Спасибо, вы правы ival вышел нормально как 400 (если в разных строчках) а pint сейчас посмотрю в пошаговом режиме. А как тут плюс/спасибо поставить тому, кто помог с вопросом?

Добавлено через 10 минут и 36 секунд
Цитата(vpf @  15.4.2017,  10:41 Найти цитируемый пост)
И наконец есть же симулятор
  И тут вы тоже правы, огромное спасибо в дебуггере сразу вышел и сегмент и смещение 5959:0094 осталось разобраться каким образом вывести прямо в программе числовое значение сегмента 5959? а не заходить в отладчик для просмотра?


Это сообщение отредактировал(а) avitec - 15.4.2017, 12:06
PM MAIL   Вверх
volatile
Дата 15.4.2017, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(avitec @  15.4.2017,  10:32 Найти цитируемый пост)
    printf("pint %x %p, ival %x\n",pint,ival);


PM MAIL   Вверх
avitec
Дата 17.4.2017, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.4.2017
Где: г.Киров

Репутация: нет
Всего: нет



Цитата(volatile @  15.4.2017,  14:39 Найти цитируемый пост)
printf("pint %x %p
 спасибо попробую

PM MAIL   Вверх
avitec
Дата 17.4.2017, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.4.2017
Где: г.Киров

Репутация: нет
Всего: нет



volatile вы оказались правы, большое спасибо, именно в этом и была ошибка. smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1183 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.