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

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

Войти
Регистрация
Восстановить пароль
 
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
#1

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

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

Как переделать эту программу, чтобы она выполнялась через функцию? - C++
#include "stdafx.h" #include <iostream> using namespace std; int main(int argc, char* argv) { int *mas, n, sum;// dinamic...

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

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

Как одну функцию использовать в двух проектах - C++
Есть функция которую нужно вызывать в двух проектах Я поместил ее в отдельный .cpp файл Проблема в том что в двух разных проектах...

Нужно разобрать задачу - C++
#include "stdafx.h" #include "chess.h" using namespace std; horse targetHorse;// переменная, хранящая координаты цели - той точки,...

Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса? - 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
Сообщений: 129
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 не понятно
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->  - операции разыменования
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2011, 19:54
Привет! Вот еще темы с ответами:

Указатели - разобрать функцию, принимающую параметр - C++
Есть функция: void handling(char **_names, bool *voarr, int pos){ char **names=new char*; for(int j=0; j<N; ++j){ ...

Нужно разобрать функцию генерирования Id - PHP
Зачем нужно сразу 2 переменных ведь хватило бы только $sec или только $usec?Или каждой переменной набор цифр(микротайм) присваивается и они...

Как изменить функцию GetSuit, нужно заменить If-ы массивами и сделать все в одну строчку кода - C#
enum Suits { Wands, Coins, Cups, Swords } private static string GetSuit(Suits suit) {

Нужно написать функцию, делающую ровно то же самое, но всего в один оператор - C#
static bool ShouldFire(bool enemyInFront, string enemyName, int robotHealth) { bool shouldFire = true; ...


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

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

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