• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Передача Двумерного Массива В Функцию

  • Автор темы Negent
  • Дата начала
N

Negent

Как я знаю, имя массива и указателя тождественны в С++. Из этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой... Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка.
Вот код:
C++:
#include "stdafx.h"
#include <iostream>

using namespace std;

const int size1 = 3;
const int size2 = 4;
int arr[size1][size2] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

void arr_fun (int arr[][size2], int size1);

void main ()
{
arr_fun (arr[][size2], size1);
system ("pause");
}
void arr_fun (int arr[][size2], size1)
{
for (int i=0; i<size1; i++)
{
for (int j=0; j<size2; j++)
{
cout<<"arr["<<i<<"]: "<<arr[i][j]<<endl;
}
}
}
Хотя бы дайте общие понятия по логике передачи адреса двух- и более мерного массива в функцию, а дальше, я сам попробую написать =)
 
N

Negent

Как ни крутился, всё равно без глобальных переменных обойтись не удалось:
Код:
#include "stdafx.h"
#include <iostream>

using namespace std;

const int size2 = 4;

void show_arr (int arr[][size2], int);

void main ()
{
static const int size1 = 3;
int arr[size1][size2] = {{1,2,3,4},{4,5,6,7},{7,8,9,0}};
show_arr (arr, size1);
system ("pause");
}
void show_arr (int arr[][size2], int size1)
{
for (int i=0; i<size1; i++)
{
for (int j=0; j<size2; j++)
{
cout<<"Array["<<i+1<<"]: "<<arr[i][j]<<endl;
}
}
}
 
V

virtpro

Если я правильно понял... , можно передать через указатели

C++:
#include "stdafx.h"

#include <iostream>

using namespace std;

void show_arr (int *arr, int size1, int size2)
{
for (int i=0; i<size1; i++)
{
for (int j=0; j<size2; j++)
{
cout<<"Arr["<<i+1<<"][" << j+1 << "]=" << *(arr + i*size2 +j) << "; ";
}
cout << endl;
}
}

void main ()
{
const int size1 = 3;
const int size2 = 4;
int arr[size1][size2] = { {1,2,3,4}, {4,5,6,7}, {7,8,9,0} };
show_arr (&arr[0][0], size1, size2);
system ("pause");
}
 
G

Gartus

Дано целое число N и набор из N вещественных чисел. Вывести сумму всех дробных частей
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!