передача массива в функцию c



Передача двумерного массива в функцию в си

Автор задал вопрос в разделе Другие языки и технологии

C++: И снова передача двумерных массив в функцию.. . каким макаром это сделать? и получил лучший ответ

Ответ от Капитан Гугл[гуру]
Объясняю: массив - это ряд одинаковых значений (нет, я не Очевидность 🙂 ). Имя массива в C/C++ возвращает указатель на нулевой элемент массива. Статический двумерный массив - это массив массивов, а имя двумерного массива возвращает указатель на первый элемент, т. е. на массив фиксированного размера (!), и от этого никак не уйдешь: выражение a[1] означает *(a+sizeof(*a)), а раз a - массив массивов, то sizeof должен как-то вычисляться.
Поэтому либо делай динамический массив (массив ссылок, каждую инициализировать через new), либо вычисляй вручную смещения (ну ладно, не совсем вручную) :
void RandomizeArray(int *arr,...
for (int i = 0; i < arr_size_x; i++)
for (int j = 0; j < arr_size_y; j++)
arr[arr_size_y*i+j] = rand() % 100 - 50;

Ответ от Андрей Аксаментов[гуру]
Массив хранится в переменной, передаешь переменную и все.
В самой функции работаешь с переданной переменной.

Ответ от Namolem[гуру]
void Randomize(int **a, int sizeI, int sizeJ)
какое там исключение?

Ответ от DverZapili[гуру]
void RandomizeArray(int arr[][SEC_ARR_Y_SIZE], int arr_size_x, int arr_size_y)
...

Ответ от Антон ФАГ[гуру]
#include < stdio.h >
#include < stdlib.h >
#include < time.h >
void randomizeArray (int **arr, int x, int y)
{
for (int i = 0; i < y; i++)
{
for (int j = 0; j < x; j++)
{
arr[ i ][ j ] = 1 + rand() % 100;
printf("M", arr[ i ][ j ]);
}
putchar('\n');
}
}
int main ( void )
{
int **arr;
arr = ( int ** ) malloc (sizeof( int ) * 5);
for (int i = 0; i < 5; i++)
arr[ i ] = ( int * ) malloc (sizeof( int ) * 4);
srand( time( NULL ) );
randomizeArray(arr, 4, 5);
for (int i = 0; i < 5; i++)
free(arr[ i ]);
free( arr );
system("pause > nul");
return 0;
}

Ответ от Krab Вark[гуру]
"двумерный массив, но не так void RandomizeArray(int arr[][5]..."
В C++ нет общего типа обычных двумерных массивов. Есть типы int arr[][1], int arr[2], ..
Придется использовать явное приведение типа, и указывать размер, а если хочешь без явного указания размера - используй все же векторы.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: C++: И снова передача двумерных массив в функцию.. . каким макаром это сделать?

что такое typedef struct в си? и для чего он нужен? какие у него функции и что будет без него?
>что такое typedef struct в си?
Объявление типа "структура".

>и для чего он
подробнее...
спросили в Pavel Prusskiy
Народ, как задается двумерный массив в паскале??
Массивы, положение элементов в которых описывается двумя индексами, называются двумерными.подробнее...
спросили в Процедуры Процедура
процедуры в Си
Да вроде всё правильно. С большой натяжкой процедурой в Си можно назвать функцию, которая не имеет
подробнее...
спросили в MIT Modà
Функции div и mod в Си
Div эквивалент в Си это / если тип Int, а эквивалент mod
подробнее...
спросили в Stdio h Stdlib h
Динамический массив в Си
Операция new для языка C++, а в Си требуется такая конструкция при выделении памяти:подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Музыка СИ
Тритоны и характерные интервалы в си миноре. Пропустила тему, теперь ничего не могу разобрать...
Тритоны в миноре строятся (пишу по парам) на 2-й ступени (ум5) и 6-й ступени (ум4) и на 7-й
подробнее...
спросили в Stdio h String h
Файлы в Си
1. открываем файл на чтение/запись
2. читаем весь в строку
3. разбиваем на массив из
подробнее...
спросили в Музыка Тоник
Люди!!!Как построить субдоминанту, доминанту и тонику в си бемоль мажоре и ре мажоре?
В си бемоль мажоре:
тоника: си бемоль-ре-фа
субдоменанта: ми бемоль-соль-си бемольподробнее...
спросили в Музыка
1)как в си миноре будет Т5/3,S6/4,Д6/4,Д4/3.
Интересно, а где это сейчас учат так писать аккорды: 5/3,6/4,4/3???Исходя из Вашего написания,
подробнее...

Подскажите, как выглядит поездка из Бангкока в Сием Рип? сколько это по времени? есть ли замена транспорта на маршруте?
Самый быстрый и простой способ добраться из Бангкока в Сием Рип — полет на самолете. Но на
подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*