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

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

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

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

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

  • Автор темы Shmaximus
  • Дата начала
S

Shmaximus

Как я знаю, имя массива и указателя тождественны в С++. Из этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой... Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка.
Вот код:
Код cpp:<!--shcode--><pre><code class='CODE'>#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;
        }
    }
}[/CODE] Хотя бы дайте общие понятия по логике передачи адреса двух- и более мерного массива в функцию, а дальше, я сам попробую написать =)
 
I

ivashovLEX

Существует несколько способов передачи двумерных массивов: это могут быть двойные указатели, структурированные массивы, представление одномерного массива как двумерного и др.
 
V

Veselk

Вот примерно так это можно реализовать...

Код cpp:<!--shcode--><pre><code class='CODE'> const int size1 = 3;
 const int size2 = 4;
 int arr[size1[size2 = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
 int* arr_ptr[size1 = {arr[0, arr[1, arr[2};

 void arr_func (int* ptr[, int size);

int main(int argc, char* argv[)
{
    arr_func(arr_ptr, size1);
    return 0;
}

 void arr_func (int* ptr[, int size)
 {
     for (int i = 0; i < size; i++)
     {
         for (int j = 0; j < size2; j++)
         {
             int a = ptr[i[j;
             printf("%d, ", a);
         }
         printf("\n");
     }
 }[/CODE]
 
Мы в соцсетях:

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