Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
#1

2х мерные массивы - C++

02.07.2012, 18:01. Просмотров 596. Ответов 8
Метки нет (Все метки)

Скажите пожалуйста ПОЧЕМУ равны данные "адресса"
есть массив a[3][3] а в нем a+2=*(a+2)
Как это?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2012, 18:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 2х мерные массивы (C++):

2-мерные массивы: Вызов конструктора портит данные в других экземплярах - C++
Проблема: обнаружилось, что порой пропадают числа из существующих экземпляров класса. Числа (коллективно -- строками или колонками)...

N-мерные вектора - C++
неработает вывод и оператор = . помогите пожалуйста main.cpp #include "vector.h" int main() { int...

Даны вещественные n-мерные векторы x,y,z. Найти xy+yz+xz - C++
Люди спасайте....знаю что задача фигня но я запутался много где и уже неделю не знаю как все разгрести...Буду крайне благодарен за помощь ...

Массивы. Циклические алгоритмы (Заполнить массивы случайными числами, лежащими в интервале 0 до 100) - C++
Доброго дня, уважаемые форумчане, помогите пожалуйста решить задание. Заполнить массивы случайными числами, лежащими в интервале 0 до...

Указатели и массивы. Индексация с помощью указателей. Передача массивов в функции. Динамические массивы (обработка матриц) - C++
Для каждого элемента , bij, i= 1,...,n , j=1,...,n определяется свой многоугольник местонахождением соответствующего элемента aij (см....

Многомерные массивы, как перебирать внутренние массивы - C++
Здравствуйте. Такой учебный код и плохо понимаю как перебираются внутренние массивы, может кто пояснит подоходчивее. Именно внутренний...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 18:38 #2
Цитата Сообщение от Aliru777 Посмотреть сообщение
в нем a+2=*(a+2)
что в нем?
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
02.07.2012, 18:41 #3
Цитата Сообщение от Aliru777 Посмотреть сообщение
a+2=*(a+2)
слева от знака равно указатель,а справа значение,которое хранится по адресу этого указателя,очень маловероятно,что они равны
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
02.07.2012, 18:58  [ТС] #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "string"
 
using namespace std;
 
int sum(int ar[][3], int size);
 
int _tmain(int argc, _TCHAR* argv[])
{
    int ar1[3][3]={{0,1,2},{3,4,5},{6,7,8}};
    int ar2[3]={55,77,99};
    cout<<**(ar1+2)<<"\t"<<ar1+2<<"\t"<<ar1[2]<<"\t"<<*ar1[2]<<endl;
    //cout<<ar1+1<<"\t"<<*(ar1+1)<<"\t"<<*(ar1+1)+2<<"\t"<<*(*(ar1+1)+1)<<"\t"<<ar1[1]<<"\t"<<&ar1[2][0];
    cout<<ar1[0][0]<<"\t"<<ar1[0]<<"\t"<<*(*(ar1+1)+1);
    getch();
    return 0;
}
судя по вижуал студио они равны
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
02.07.2012, 19:04 #5
равнозначны следующие записи ar1+2 и ar1[2],поэтому одинаковый результат
Миниатюры
2х мерные массивы  
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
02.07.2012, 19:07  [ТС] #6
был не прав.
расскаиваюсь.
теперь вопрос
?
ПОЧЕМУУУУУУУ
C++
1
cout<<(ar1+1)<<"\t"<<*(ar1+1);
Somebody
2788 / 1602 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
02.07.2012, 19:08 #7
a + 2 имеет тип char(*)[3], указывает на одномерный массив a[2]
*(a + 2) имеет тип char*, указывает на a[2][0]
Сам адрес - один и тот же.
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
02.07.2012, 19:45  [ТС] #8
а если чуть медленней.
в 2х мерных массивах допустим а[3][3] а указывает на строки - то есть а+1 это адресс а(1)(0)
*(а+1) это указатель на а(1)(0) но *(а+1)+1 уже указатель на а(1)(0)
это надо просто запомнить или можно понять все таки?
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
02.07.2012, 20:54 #9
Цитата Сообщение от Aliru777 Посмотреть сообщение
а+1 это адресс а(1)(0)
*(а+1) это указатель на а(1)(0)
первое-указатель на второй "столбец" массива(то есть на его начало),а второе -указатель на элемент а[1][0]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2012, 20:54
Привет! Вот еще темы с ответами:

Попадание точки. Массивы чисел. Массивы записей. - C++
Всем привет. По языкам задали три контрольные на си. Я сам си не знаю, даже не представляю, поэтому очень нужна ваша помощь. ...

Массивы структур и массивы строк - C++
Здравствуйте. Возникла проблема с одной работой: Постановка задачи: 1. Сформировать динамический массив из элементов структурного типа....

индексные массивы и адресные массивы - C++
погитите решить задачу c массивами двумя способами {индексные и адресные} { Вычислить суммы элементов каждой строки матрицы Х(20х20),...

Массивы структур и массивы строк - C++
1. Сформировать динамический массив из элементов структурного типа. Структурный тип определен в варианте. 2. Распечатать...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.07.2012, 20:54
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru