Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
#1

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

17.05.2011, 19:13. Просмотров 351. Ответов 8
Метки нет (Все метки)

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 (получение значения)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 19:13
Ответы с готовыми решениями:

Для каждой строки из заданного набора S проверить: верно ли, что она содержит как подстроку одну из строк из набора T
Здравствуйте, уважаемые пользователи! Опять несложная задачка на строки, но не...

Как переделать эту программу, чтобы она выполнялась через функцию?
#include "stdafx.h" #include <iostream> using namespace std; int...

Как переделать эту программу, чтобы она выполнялась через функцию?
#include "stdafx.h" #include <iostream> using namespace std; int main() {...

Как более грамотно называть функцию и заголовочный файл, в котором она находится?
Этот вопрос у меня возник недавно, после того, как я нечайно состряпал ошибку....

Как одну функцию использовать в двух проектах
Есть функция которую нужно вызывать в двух проектах Я поместил ее в...

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

Нужно разобрать задачу
#include "stdafx.h" #include "chess.h" using namespace std; horse...

Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса?
Ну то есть так: есть родительский и дочерний класс, в родительском определен...

Указатели - разобрать функцию, принимающую параметр
Есть функция: void handling(char **_names, bool *voarr, int pos){ char...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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