|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.12.2013, 16:12 | #1 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
Адресная арифметика в Си.Адреса переменных.
В ходе работы программы изменяется значение у, это происходит в выделенной мной строчке с указателем m.Почему на скриншоте снизу адрес m меняется когда в программе прибавляется 2 и вычитается 2, почему адреса изменились именно так?
Предположим, есть переменные с адресами Код:
|
26.12.2013, 16:21 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Вообще не пойму цели сей программы... Что она показывает? Что так писать нельзя?
I'm learning to live...
Последний раз редактировалось Stilet; 26.12.2013 в 16:26. |
|
26.12.2013, 17:33 | #3 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
Stilet, эта лабораторная работа.Написана не мной, мне нужно ее защитить.На основные вопросы я ответил, но потом спросили, почему меняется адрес m, я ответил неправильно.Потому мне дали задание по адресам.
|
26.12.2013, 18:05 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
m - указатель на double. Далее действует адресная арифметика. Указатель смещается на размер типа, на который указывает, поэтому при увеличении/уменьшении на 2 указатель смещается на 16 байт.
"почему меняется адрес m" - потому что его меняют
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 26.12.2013 в 18:28. |
26.12.2013, 18:20 | #5 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
26.12.2013, 18:28 | #6 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Цитата:
Да, описался. Исправил биты на байты
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 26.12.2013 в 18:32. |
|
26.12.2013, 19:08 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Код:
I'm learning to live...
|
|
26.12.2013, 20:26 | #8 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
Кто угадает где в программе меняется у?На этот вопрос я ответил.
А теперь серьезно.Допустим есть переменные с адресами a=FE54;и x=FE44;.Какие адреса будут у переменных когда a+=3; и x-=2;? Последний раз редактировалось East Undia Trading; 26.12.2013 в 20:28. |
26.12.2013, 20:42 | #9 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
26.12.2013, 20:45 | #10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Если int *a и float *x, то a станет FE60, а x станет FE3C (если sizeof(int) = 4, sizeof(float) = 4).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Известны фамилии,адреса и телефоны 25-ти человек,Найти фамилии и адреса людей,чей телефон начинается с цифры 3. Расмотреть два слу | salomon93 | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 01.12.2011 23:36 |
адресная арифметика | sterh11001100 | Microsoft Office Excel | 1 | 08.12.2010 13:20 |
Адреса переменных | rommster | Visual C++ | 1 | 26.11.2010 08:35 |
Адресная арифметика и матрица. | GrindeX | Общие вопросы C/C++ | 8 | 08.03.2010 15:03 |
Адресная книга | Snake_ua | PHP | 6 | 26.02.2008 09:40 |