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

нужно разобрать всего одну функцию как она работатет - C++

Восстановить пароль Регистрация
 
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
17.05.2011, 19:13     нужно разобрать всего одну функцию как она работатет #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
void matrixsqr(int **a, int N, int M) // Интовая версия
{ 
        
 int *p, **r; // Указатель
 for (r=a+N-1; r>=a; --r) // Цикл со счётчиком указаетльного типа, перебираем все сктроки матрицы
        {
                for (p=*r+M-1; p>=*r; --p) // Цикл со счётчиком указаетльного типа, перебираем все элементы строки матрицы
                {
                *p=*p*(*p); // Возведение в квадрат умножением.
                }
        }
}
данная функция возводит в квадрат каждый элемент матрицы размером N на M помогите разобраться с указателями в данной функции

Добавлено через 23 минуты
мне нужно только знать почему тут for (p=*r+M-1; p>=*r; --p) используется *r (получение значения)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 19:13     нужно разобрать всего одну функцию как она работатет
Посмотрите здесь:

C++ Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса?
Как одну функцию использовать в двух проектах C++
C++ Как переопределить функцию так, чтобы она не только могла принимать разные параметры, но и возвращать тоже разные?
Нужно разобрать задачу C++
C++ Выдает одну одну ошибку как испрвить
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
17.05.2011, 19:23     нужно разобрать всего одну функцию как она работатет #2
p - указатель на int;
r - указатель на указатель на int.
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
17.05.2011, 19:23  [ТС]     нужно разобрать всего одну функцию как она работатет #3
это и так ясно как божий день
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
17.05.2011, 19:25     нужно разобрать всего одну функцию как она работатет #4
Цитата Сообщение от .Malek. Посмотреть сообщение
мне нужно только знать почему тут for (p=*r+M-1; p>=*r; --p) используется *r (получение значения)
Тогда уточните вопрос
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
17.05.2011, 19:26  [ТС]     нужно разобрать всего одну функцию как она работатет #5
разве вы не видите там все написано мне нужно только знать почему тут for (p=*r+M-1; p>=*r; --p) используется *r (получение значения)
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
17.05.2011, 19:31     нужно разобрать всего одну функцию как она работатет #6
Извините, все равно не понимаю. Значением *r является указатель. Возможно, кто-то объяснит лучше.
v0l0d1ka
9 / 9 / 0
Регистрация: 14.12.2010
Сообщений: 127
17.05.2011, 19:34     нужно разобрать всего одну функцию как она работатет #7
Получаемое значение *r - это есть адрес переменной, который указывает на начало строки.
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
17.05.2011, 19:36  [ТС]     нужно разобрать всего одну функцию как она работатет #8
Смотрите int **r содержит адрес массива указатель т.е. адрес int *r в первым for получается что r это адрес первой строки поэтому мы смотрим построчно а *r не понятно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2011, 19:54     нужно разобрать всего одну функцию как она работатет
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
17.05.2011, 19:54     нужно разобрать всего одну функцию как она работатет #9
Приведу примеры.
C++
1
2
3
4
5
6
7
int mas[][]; //mas - указатель на матрицу , int mas[][] - матрица int'ов
int **mas; //аналогично объяснениям выше, но различие в способе выделения памяти
                //первый вариант - память выделяется статически, второй - динамически
 
int * mas []; //mas - указатель на массив указателей на int, int* mas[] - массив указателей на int
                   //таким образом *mas - указатель на адрес (первая строка матрицы), (*mas). 
                  // или mas->  - операции разыменования
Yandex
Объявления
17.05.2011, 19:54     нужно разобрать всего одну функцию как она работатет
Ответ Создать тему
Опции темы

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