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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Negent, 23 июн 2014.

  1. Negent

    Negent New Member

    Регистрация:
    9 дек 2011
    Сообщения:
    2
    Симпатии:
    0
    Как я знаю, имя массива и указателя тождественны в С++. Из этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой... Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка.
    Вот код:
    Код (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;
    }
    }
    }
    Хотя бы дайте общие понятия по логике передачи адреса двух- и более мерного массива в функцию, а дальше, я сам попробую написать =)
     
  2. Negent

    Negent New Member

    Регистрация:
    9 дек 2011
    Сообщения:
    2
    Симпатии:
    0
    Как ни крутился, всё равно без глобальных переменных обойтись не удалось:
    Код (Text):
    #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;
    }
    }
    }
     
  3. virtpro

    virtpro Member

    Регистрация:
    18 сен 2009
    Сообщения:
    9
    Симпатии:
    0
    Если я правильно понял... , можно передать через указатели

    Код (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");
    }
     
  4. Gartus

    Gartus New Member

    Регистрация:
    9 ноя 2014
    Сообщения:
    2
    Симпатии:
    0
    Дано целое число N и набор из N вещественных чисел. Вывести сумму всех дробных частей
     
Загрузка...
Похожие Темы - Передача Двумерного Массива
  1. Shmaximus
    Ответов:
    2
    Просмотров:
    1.109
  2. Corexis
    Ответов:
    0
    Просмотров:
    65
  3. Shouldercannon
    Ответов:
    0
    Просмотров:
    483
  4. Shouldercannon
    Ответов:
    0
    Просмотров:
    384
  5. 123456789igor
    Ответов:
    0
    Просмотров:
    803

Поделиться этой страницей