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

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

Войти
Регистрация
Восстановить пароль
 
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
#1

Указатель на матрицу - C++

22.10.2012, 20:50. Просмотров 1042. Ответов 7
Метки нет (Все метки)

Добрый вечер.
Допустим у меня есть матрица:
C
1
int a[n][m];
и указатель на указатель:
C
1
int **pp;
Как мне указателю pp присвоить адрес матрицы?
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2012, 20:50     Указатель на матрицу
Посмотрите здесь:

C++ Матрица в классе, указатель на матрицу.
C++ Функция принимает указатель на void и возвращает указатель на int
Найти матрицу, получающуюся перестановкой столбцов, используя указатель C++
C++ Как получить ссылку на указатель или указатель на указатель в массиве?
Как в функцию передать указатель на матрицу? C++
Приведение любого двумерного массива к типу указатель на указатель C++
Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
22.10.2012, 21:54     Указатель на матрицу #2
C++
1
2
3
4
5
6
7
8
for(n=0;n<4;n++){
p=a[i]; //указателю р присваивается адрес первого элемента строки с номером i
for(m=0;m<4;m++){
*(p+m)=4*i+j+1;//адрес элемента m то есть адрес a[n][m]
 
cout <<a[n][m]}
cout <<"\n";
}
yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
22.10.2012, 22:47     Указатель на матрицу #3
Цитата Сообщение от Евгений89 Посмотреть сообщение
p=a[i]; //указателю р присваивается адрес первого элемента строки с номером i
Точно адрес? Не значение?
MrGrig
23.10.2012, 10:55
  #4

Не по теме:

по мне так проще фигней такой не страдать указателю выделять память...

PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
23.10.2012, 18:36  [ТС]     Указатель на матрицу #5
Евгений89 , откуда взялось n<4? Уточню вопрос: если исп. одномерный массив, то после p=&arr[0];
(p - указатель) с массивом arr можно будет работать только через указатель p; как достичь того же, но только в случае с матрицами(сколько раз и в каком порядке применять операции *, &, [] к arr)?
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.10.2012, 18:46     Указатель на матрицу #6
если массив одномерный
int a[N],
то имя массива a - адрес первого элемента,
a + i - адрес i-го элемента массива
*(a+i) - значение i-го элемента (эквивалентно a[i])

Двумерный массив int a[M][N] является одномерным массивом, каждый элемент которого является массивом типа int размера N. Поэтому
a[i] - адрес начала i-ой строки массива int a[M][N], то есть со строками можно работать как с одномерными массивами.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
23.10.2012, 18:50     Указатель на матрицу #7
Надо по-особому определять указатель.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
#define N 2
#define M 3
 
int main()
{
    int a[N][M] = { {1, 2, 3}, {4, 5, 6} };
    int (*p)[M] = a;
    
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            printf("%d ", p[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}
int **p не прокатит для статических двумерных массивов. Как для динамических уже показано выше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 18:52     Указатель на матрицу
Еще ссылки по теме:

Указатель на матрицу C++
Функция, получающая указатель на обычную функцию, получает указатель на метод класса C++
C++ Как правильно удалять выделенную память под указатель на указатель?
Объяснить работу функции, возвращающей указатель на указатель на char C++
C++ Указатель на указатель, функции для создания новых массивов?

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
4219 / 2193 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.10.2012, 18:52     Указатель на матрицу #8
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Надо по-особому определять указатель.
именно так, с учетом того, что это массив массивов. при этом соблюсти приоритет операций, поставить скобочку правильно. А вообще некоторые простые трюки с двумерными массивами можно здесь посмотреть (в последних постах):

Дан двумерный массив. Поменять местами 1 и 3 строки
Найти сумму и количество четных чисел матрицы, меньших 10
и высший пилотаж
Удаление нулевой(-ых) строчки и столбца из матрицы
Yandex
Объявления
23.10.2012, 18:52     Указатель на матрицу
Ответ Создать тему
Опции темы

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