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

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

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

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

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

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

C++ Попадание точки. Массивы чисел. Массивы записей.
C++ N-мерные вектора
индексные массивы и адресные массивы C++
массивы указателей,указатели на массивы C++
C++ массивы указателей,указатели на массивы
Массивы структур и массивы строк C++
C++ Массивы. Циклические алгоритмы (Заполнить массивы случайными числами, лежащими в интервале 0 до 100)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 18:38     2х мерные массивы #2
Цитата Сообщение от Aliru777 Посмотреть сообщение
в нем a+2=*(a+2)
что в нем?
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
02.07.2012, 18:41     2х мерные массивы #3
Цитата Сообщение от Aliru777 Посмотреть сообщение
a+2=*(a+2)
слева от знака равно указатель,а справа значение,которое хранится по адресу этого указателя,очень маловероятно,что они равны
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
02.07.2012, 18:58  [ТС]     2х мерные массивы #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     2х мерные массивы #5
равнозначны следующие записи ar1+2 и ar1[2],поэтому одинаковый результат
Миниатюры
2х мерные массивы  
Aliru777
1 / 1 / 0
Регистрация: 03.11.2011
Сообщений: 71
02.07.2012, 19:07  [ТС]     2х мерные массивы #6
был не прав.
расскаиваюсь.
теперь вопрос
?
ПОЧЕМУУУУУУУ
C++
1
cout<<(ar1+1)<<"\t"<<*(ar1+1);
Somebody
2777 / 1591 / 142
Регистрация: 03.12.2007
Сообщений: 4,169
Завершенные тесты: 1
02.07.2012, 19:08     2х мерные массивы #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  [ТС]     2х мерные массивы #8
а если чуть медленней.
в 2х мерных массивах допустим а[3][3] а указывает на строки - то есть а+1 это адресс а(1)(0)
*(а+1) это указатель на а(1)(0) но *(а+1)+1 уже указатель на а(1)(0)
это надо просто запомнить или можно понять все таки?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2012, 20:54     2х мерные массивы
Еще ссылки по теме:

C++ Массивы структур, массивы векторов
2-мерные массивы: Вызов конструктора портит данные в других экземплярах C++
C++ Даны вещественные n-мерные векторы x,y,z. Найти xy+yz+xz
Многомерные массивы, как перебирать внутренние массивы C++
Массивы структур и массивы строк C++

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

Или воспользуйтесь поиском по форуму:
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
02.07.2012, 20:54     2х мерные массивы #9
Цитата Сообщение от Aliru777 Посмотреть сообщение
а+1 это адресс а(1)(0)
*(а+1) это указатель на а(1)(0)
первое-указатель на второй "столбец" массива(то есть на его начало),а второе -указатель на элемент а[1][0]
Yandex
Объявления
02.07.2012, 20:54     2х мерные массивы
Ответ Создать тему
Опции темы

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