1

Тема: Масиви як аргументи функцій

1. Як правильно передавати двовимірні масиви як аргументи?
2. Чи можна зробити, щоб функція вертала масив, не використовуючи вказівники?

Ось, наприклад, що мене найбільше бентежить. Чи можна покращити цей шматок коду?

const int ARRAY_SIZE = 4;

void sumArrays(const int mas_a[ARRAY_SIZE][ARRAY_SIZE], const int mas_b[ARRAY_SIZE][ARRAY_SIZE], int mas_c[ARRAY_SIZE][ARRAY_SIZE])
{
    for (int i = 0; i < ARRAY_SIZE; i++)
        for (int j = 0; j < ARRAY_SIZE; j++)
            mas_c[i][j] = mas_a[i][j] + mas_b[i][j];
}

2

Re: Масиви як аргументи функцій

pika1989 написав:

1. Як правильно передавати двовимірні масиви як аргументи?

Для початку: https://www.eskimo.com/~scs/cclass/int/sx9a.html
Або google-> passing multidimensional arrays as arguments, і вибирайте що краще подобається. У C11 це можна зробити іншими способами.

pika1989 написав:

2. Чи можна зробити, щоб функція вертала масив, не використовуючи вказівники?

Спитайте краще так: чи можна програмувати на С (С++), не використовуючи вказівники (масиси, класи, структури, ...)

pika1989 написав:

Ось, наприклад, що мене найбільше бентежить. Чи можна покращити цей шматок коду?

Залежить від того, що Вам конкретно не подобається в цьому коді. Він виконує своє призначення, виконується стабільно, читається без напруження. Що Ви хотіли би покращити?

Подякували: pika19891

3 Востаннє редагувалося koala (01.08.2015 16:37:43)

Re: Масиви як аргументи функцій

pika1989 написав:

1. Як правильно передавати двовимірні масиви як аргументи?

За посиланням, з додаванням модифікатора const, якщо треба.
Взагалі, оскільки ви використовуєте C++ (це видно з const), краще брати вектори і не забивати собі голову.

pika1989 написав:

2. Чи можна зробити, щоб функція вертала масив, не використовуючи вказівники?

В принципі не напряму, але можна, наприклад, оголосити структуру з масивом і передавати її. Але навіщо забивати стек ними?

pika1989 написав:

Чи можна покращити цей шматок коду?

С-way:

const int ARRAY_SIZE = 4;
typedef int Array[ARRAY_SIZE][ARRAY_SIZE];

void sumArrays(const Array mas_a, const Array mas_b, Array mas_c)
...

C++-way - створити свій тип і оператори додавання і присвоювання в ньому.
C++11/14-way - зробити ці оператори такими, що працюють із семантикою зсуву.