powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Передача двумерного массива в функцию
7 сообщений из 7, страница 1 из 1
Передача двумерного массива в функцию
    #38747116
kuritel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я знаю, имя массива и указателя тождественны в С++. Из этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой... Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка.
Вот код:

Код cpp:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
#include "stdafx.h"

#include 



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    {

        for (int j=0; j        {

    cout<<"arr["<        }

    }

}



Хотя бы дайте общие понятия по логике передачи адреса двух- и более мерного массива в функцию, а дальше, я сам попробую написать =)
...
Рейтинг: 0 / 0
Передача двумерного массива в функцию
    #38747139
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuritelОчевидно, что где-то вкралась ошибка.
Ошибка вкралась уже в начальных рассуждениях. В С нет двумерных массивов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передача двумерного массива в функцию
    #38747157
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, что употреблял автор, когда придумал синтаксис:

int arr[size1[size2....
...
Рейтинг: 0 / 0
Передача двумерного массива в функцию
    #38747187
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuritelКак я знаю, имя массива и указателя тождественны в С++.


Это неправда, они НЕ тождественны.

kuritelИз этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой...


А в этом ты прав. Можно.

kuritel Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка.
Хотя бы дайте общие понятия по логике передачи адреса двух- и более мерного массива в функцию, а дальше, я сам попробую написать =)

Как уже сказали, в С и С++ нет двумерных (многомерных) массивов.
Далее, многомерные массивы можно имитировать четырьмя способами (может есть и больше):

хранить одномерный массив NxM и перевычислять адреса по двум координатам. В С++ можно обернуть это в класс.

хранить массив массивов

хранить массив указателей на массивы (как правило, динамически выделенные)

(только С++) имитировать многомерные массивы вложенными векторами (вектор вектора, вектор вектора вектора и т.д.)

Далее всё зависит от того, какой из способов ты выберишь .
...
Рейтинг: 0 / 0
Передача двумерного массива в функцию
    #38747189
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло.

Передавать в функции массивы нельзя.
Можно передавать либо указатели либо ссылки на одни из тех структур, что я уже выше перечислил.
...
Рейтинг: 0 / 0
Передача двумерного массива в функцию
    #38747367
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuritel Как я знаю, имя массива и указателя тождественны в С++.

Как вам уже сказал MasterZiv, это не так.
Указатель это переменная содержащая адрес другой переменной. Именем массива является указательное выражение, константа, а не переменная. Потому, любые операция реинициализации по отношению к имени массива будут незаконны.


kuritel Из этого следует, что можно инициализировать указатель, а работать с ним, как с именем массива, добавив индекс (квадратный скобки) или смещение к имени массива и круглые скобки со звёздочкой...

Мне кажется, что вы написали не то, что хотели сказать. Что значит инициализировать указатель ? Это значит записать в указатель значение (предполагается что вы объявили указатель ранее, а сейчас просто записали в него значение, p=&b, например). А теперь вы собираетесь работать с ним как с именем массива .( Про эту фразу я написал ниже. Допустим сейчас, что эту фразу можно применить.) Для начала вам нужно выделить память, а уже потом работать с этой памятью. (После инициализации указателя у вас есть только одна ячейка памяти, если только вы не инициализировали указатель адресом начала массива(или адресом внутри выделенной области памяти))

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

kuritel Но не в этом суть. Я пробовал ввести передачу в функцию двумерного массива (столбы и строки) - не вышло. Очевидно, что где-то вкралась ошибка.
Вот код:

Ваш код поврежден ?
...
Рейтинг: 0 / 0
Передача двумерного массива в функцию
    #38747539
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury,

код был повреждён из-за неверного форматирования.
Почему код безвозвратно при этом теряется -- другой вопрос, но главное, что его не восстановить.

Если kuritel зашлёт ещё раз код открытым текстом или с правильным форматированием, я вставлю его в нужное место.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Передача двумерного массива в функцию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]