Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по массивам Си  (Прочитано 6193 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mp
Гость
« : 17-02-2006 08:01 » 

Есть такой код:
Код:
#include <iostream>
using namespace std;

int main()
{
int a[10];

cout << &a[8] - &a[7] << endl;

return 0;
}

В результате на экране получим 1. Так вот, вопрос: почему именно 1? Ведь по идее мы вычитаем из указателя на элемент массива указатель на предыдущий элемент. И если взять в расчет, что каждый int занимает по 4 байта, ответ должен быть 4. В чем я не прав?
Записан
REM
Гость
« Ответ #1 : 17-02-2006 08:10 » 

В С есть такая фишка: арифметика указателей. Грубо говоря, С расценивает эту операцию, как попытку узнать как далеко отстоят друг от друга индексы массива: 1=8-7.
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #2 : 17-02-2006 08:19 » 

вот так:
Код:
cout << ((int)&a[8]) - ((int)&a[7]) << endl;
должно быть 4
Записан

Удачного всем кодинга! -=x[PooH]x=-
mp
Гость
« Ответ #3 : 17-02-2006 08:24 » new

Все понял, спасибо за ответы Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines