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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Робота с адресами, обратится к элементу массива за адресом 
:(
    Опции темы
stopanko
Дата 23.5.2013, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Єсть указатель на первый элемент массива. Ми можем узнать адрес этого элемента. Как обратится к і тому элементу сместившись от этого адреса?

Код

//---------------------------------------------------------------------------

#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <tchar.h>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{

int mas[5];


 for (int i = 0; i < 5; i++) {
        mas[i]=i;
 }
 int *n =&mas[0];
cout<<n<<" адрес\n";
cout<<&mas[0]<<" адрес\n";
cout<<"";
    getch();
    return 0;
}
//---------------------------------------------------------------------------


PM MAIL   Вверх
bsa
Дата 23.5.2013, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Код
int array[10];
...
array[3] = 0;
*(array+3) = 0;
*(&array[0] + 3) = 0;
int *p0 = array;
p0[3] = 0;
p0 += 3;
*p0 = 0;
int *p1 = array[1];
*(p1+2) = 0;
Эти все операции выполняют одно и тоже - делают элемент под номером 3 (считая от 0) равным 0.
PM   Вверх
volatile
Дата 24.5.2013, 01:01 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(bsa @  23.5.2013,  21:52 Найти цитируемый пост)
array[3] = 0;

bsa, скромно умолчал.Есть еще такая фича:
Код

3[array] = 0;

 smile 
(юзать не стоит, просто чтоб знали)

Это сообщение отредактировал(а) volatile - 24.5.2013, 01:04
PM MAIL   Вверх
NoviceF
Дата 24.5.2013, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

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



Цитата(volatile @  24.5.2013,  02:01 Найти цитируемый пост)
3[array] = 0;


хм.. и как это интерпретируется?
PM MAIL   Вверх
xvr
Дата 24.5.2013, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(NoviceF @  24.5.2013,  12:58 Найти цитируемый пост)
хм.. и как это интерпретируется? 

Интерпретируется это обычно длинным срачем страниц так на 5, плавно переходящим от вопроса 'а что это?' к утверждению 'какое Г... ваш С/С++ если в нем такое можно написать!', и заканчивается обычно вмешательством модератора и закрытием темы. Оно вам надо?

NB.
array[3] the same as *(array+3) the same as *(3+array) the same as 3[array]

PM MAIL   Вверх
bsa
Дата 24.5.2013, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Никогда не используйте эту форму
Многие программисты о ней и не знают. А большинство из тех, кто знает банально не помнят. И будут при ее виде долго тупить, пытаясь сообразить, что это за галлюцинации.
PM   Вверх
Нэраварин
Дата 24.5.2013, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



И ещё на заметку автору совсем не обязательно так писать  
Цитата
<pre id="cppb_GQ0ZWE" class="brush: cppb" title="Cppb">
  int *n =&mas[0];
  </pre>
 потому что само имя массива и есть указатель на первый элемент  и соответственно написав 
Код

int *n = mas;
 вы получите в данном выражении тоже самое что и с избыточными & и [0]

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
bsa
Дата 27.5.2013, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Нэраварин, вариант &mas[0] - наглядней. Сразу видно, что mas - это массив, а не другой указатель. С другой стороны, если в будущем mas из обычного массива превратится в вектор, то указанный код менять не придется.
PM   Вверх
stopanko
Дата 28.5.2013, 00:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











вопрос вод в чем.  Нужно представить матрицу в виде одномерных массивов. Главный массив будет вмещать указатели на первые элементы остальных. Нужно зная указатель на первый элемент (выбираем из главного массива) обратится к і тому элемента одномерного.
алгоритм должен экономить время на поиск элемента(Метод Айлиффа)
каким образом такую структуру лучше создавать и как искать элементи?

user posted image

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
bsa
Дата 28.5.2013, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Код
int *p[4];
...
p[1][2] = 10; //заслать в строку под номером 1 и столбец под номером 2 значение 10

PM   Вверх
stopanko
Дата 9.6.2013, 00:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











если ми имеем не указатель а адрес на начала массива. Можно ли узнать адрес следующего элемента зная тип массива и сколько этот тип занимает места(INT 4 байта)?

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
xvr
Дата 9.6.2013, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(stopanko @  9.6.2013,  00:07 Найти цитируемый пост)
если ми имеем не указатель а адрес на начала массива.

Технически это одно и тоже.

Цитата(stopanko @  9.6.2013,  00:07 Найти цитируемый пост)
Можно ли узнать адрес следующего элемента зная тип массива и сколько этот тип занимает места(INT 4 байта)?

Если я вас правильно понял, то можно -
Код

int array[1000];

&array[1]; // Ваш адрес

PM MAIL   Вверх
stopanko
Дата 9.6.2013, 17:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











есть ли разница в скорости работы между тем чтобы писать имя указателя + N и искать элемент или как-то преобразовывать адрес первого элемента?

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
xvr
Дата 9.6.2013, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(stopanko @  9.6.2013,  17:57 Найти цитируемый пост)
есть ли разница в скорости работы между тем чтобы писать имя указателя + N и искать элемент или как-то преобразовывать адрес первого элемента?

разницы нет

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

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

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

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

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


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

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


 




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


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

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